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