Python程序:查找唯一数组中连续区间的程序
假设我们有一个名为nums的唯一数字列表。我们必须找到一个排序的二维数字矩阵,其中每个列表都表示一个包含区间,总结了nums中连续的数字。
因此,如果输入类似于nums = [10, 11, 12, 15, 16, 17, 28, 30],则输出将为[[10, 12], [15, 17], [28, 28], [30, 30]],因为在列表[10到12],[15到17]是连续的,并且存在28和30,它们表示为[28到28]和[30到30]。
为了解决这个问题,我们将遵循以下步骤:
对列表nums进行排序
在nums的末尾插入无穷大
ans:= 新列表
l:= nums[0]
对于范围1到nums的大小,执行:
如果nums[i]不等于nums[i-1] + 1,则
在ans的末尾插入[l, nums[i-1]]
l:= nums[i]
返回ans
让我们看看下面的实现,以便更好地理解:
示例
class Solution: def solve(self, nums): nums.sort() nums.append(1e9) ans=[] l=nums[0] for i in range(1,len(nums)): if nums[i] != nums[i-1] + 1: ans.append([l, nums[i-1]]) l=nums[i] return ans ob = Solution() nums = [10, 11, 12, 15, 16, 17, 28, 30] print(ob.solve(nums))
输入
[10, 11, 12, 15, 16, 17, 28, 30]
输出
[[10, 12], [15, 17], [28, 28], [30, 30]]
广告