程序在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]]
    猜你喜欢