給出乙個區間的集合,請合併所有重疊的區間。
輸入: [[1,3],[2,6],[8,10],[15,18]]
輸出: [[1,6],[8,10],[15,18]]
解釋: 區間 [1,3] 和 [2,6] 重疊, 將它們合併為 [1,6].
輸入: [[1,4],[4,5]]
輸出: [[1,5]]
解釋: 區間 [1,4] 和 [4,5] 可被視為重疊區間。
先按首位置進行排序,假設a = [1,4]
,b = [2,3]
,當a[1] >= b[0]
說明兩個區間有重疊.
組合後的區間就是[a[0], max(a[1], b[1])]
->[1, 4]
class
solution
:def
merge
(self, intervals: list[list[
int]])
-> list[list[
int]]:
intervals =
sorted
(intervals)
res =
i =0while i <
len(intervals)
: left = intervals[i][0
] right = intervals[i][1
]while i <
len(intervals)-1
and intervals[i+1]
[0]<= right:
i +=
1 right =
max(right, intervals[i][1
])[left, right]
) i +=
1return res
56 合併區間
給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。思路 注釋 ...
56 合併區間
給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。思路 注釋 ...
56 合併區間
1.按第乙個數字對區間排序以保證區間左邊界是單調遞增的 2.新建乙個集合用於儲存結果 3.遍歷,集合左邊的區間左邊界必然比右邊的小,由此可以確定新區間的左邊界,再往後遍歷,找到之後所有區間的左邊界小於等於當前區間右邊界的區間的最大右邊界值,即為當前新區間的右邊界。之後就地繼續往後遍歷。public ...