力扣:合併區間
阿新 • • 發佈:2020-12-29
題目描述
給出一個區間的集合,請合併所有重疊的區間。
舉個例子:
輸入: intervals = [[1,3],[2,6],[8,10],[15,18]]
輸出: [[1,6],[8,10],[15,18]]
解釋: 區間 [1,3] 和 [2,6] 重疊, 將它們合併為 [1,6].
解題思路
按照所有區間的第一個元素排序,排序之後所有待合併區間的位置連續。如圖所示:
python實現
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
if len(intervals) <= 1: return intervals
# 按照區間的第一個元素排序,則待合併的區間一定連續
intervals.sort(key = lambda x:x[0])
merged = []
for m in intervals:
if len(merged) == 0 or merged[-1][-1] < m[0]:
merged.append(m)
else:
merged[ -1] = [merged[-1][0], max(merged[-1][-1], m[-1])]
return merged