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]]

更新于:2020年10月5日

579 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告