1. 程式人生 > 其它 >力扣:合併區間

力扣:合併區間

技術標籤:演算法python演算法leetcode資料結構

題目描述

給出一個區間的集合,請合併所有重疊的區間。
舉個例子:
輸入: 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