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 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告