先排序,通過後乙個區間的左座標值與前乙個區間的右座標值進行比較,便可以確定是否有重合
class
solution
:def
merge
(self, intervals:
list)-
>
list
:# 先把intervals按照第乙個值進行排序
intervals.sort(
) n =
len(intervals)
if n ==0:
return
result =
[intervals[0]
]for i in
range(1
, n)
:# 此時必有重合,則重合區間的右值為最大的那個(有兩種情況)
#第一種情況[2,5],[3,7] 合併為[2,7]
#第二種情況[2,9],[3,7] 合併為[2,9]
if intervals[i][0
]<= result[-1
][1]
: result[-1
][1]
=max
(result[-1
][1]
, intervals[i][1
])# 無重合則直接新增區間
else:)
return result
參考鏈結 Leetcode 56 合併區間
對所有區間按起點位置進行排序 遍歷到k點後的 l,r 已知的包含k點的最大區間 遍歷到k 1點,若該起點屬於 l,r 那麼可能擴充套件這個區間的終點,r max r,k 1點的end definition for an interval.struct interval interval int s,...
LeetCode 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 可被視為重疊區間。解題思路 1...
LeetCode 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 可被視為重疊區間。題意還是好理...