假设我们有一个称为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]]