Python程式:計算區間列表中總的唯一時長
假設我們有一個區間列表,每個列表表示一個區間 [開始, 結束](包含)。我們需要找到它覆蓋的總唯一時長。
因此,如果輸入類似於 intervals = [[2, 11],[13, 31],[41, 61]],則輸出將為 50,因為總的唯一覆蓋距離為 (11 - 2 + 1) = 10,然後 (31 - 13 + 1) = 19 和 (61 - 41 + 1) = 21,所以總計為 50。
為了解決這個問題,我們將遵循以下步驟:
- 如果 intervals 列表為空,則
- 返回 0
- 對列表 intervals 進行排序
- [start, end] := intervals[0]
- ans := 0
- 對於 intervals 中的每個開始和結束 (s, e),執行以下操作:
- 如果 s > end,則
- ans := ans + end - start + 1
- start := s, end := e
- 否則,
- end := max(end, e)
- 如果 s > end,則
- ans := ans + end - start + 1
- 返回 ans
讓我們看看下面的實現,以便更好地理解:
示例
class Solution: def solve(self, intervals): if not intervals: return 0 intervals.sort() start, end = intervals[0] ans = 0 for s, e in intervals: if s > end: ans += end - start + 1 start = s end = e else: end = max(end, e) ans += end - start + 1 return ans ob = Solution() intervals = [[2, 11],[13, 31],[41, 61]] print(ob.solve(intervals))
輸入
[[2, 11],[13, 31],[41, 61]]
輸出
50
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP