用 Python 编写程序来查找唯一数组的连续间隔

pythonserver side programmingprogramming更新于 2026/1/10 15:08:17

假设我们有一个名为 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 大小的 i,执行

    • 如果 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]]

相关文章


有用资源