程序在Python中查找唯一数组的连续间隔
假设我们有一个称为nums的唯一数字列表。我们必须找到数字的排序2D矩阵,其中每个列表代表一个汇总范围(以数字表示)的包含范围。
因此,如果输入类似于nums=[10,11,12,15,15,16,17,28,30],则输出将为[[10,12],[15,17],[28,28],[30、30]],如列表[10至12],[15至17]是连续的,并且那里有28和30,它们分别表示为[28至28]和[30至30]。
为了解决这个问题,我们将按照以下步骤操作:
排序列表编号
在num的末尾插入无穷大
ans:=新列表
l:=nums[0]
对于范围为1到nums的i
在ans的末尾插入[l,nums[i-1]]
l:=nums[i]
如果nums[i]与nums[i-1]+1不同,则
返回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]]