1. 程式人生 > 實用技巧 >leetcode刷題-56合併區間

leetcode刷題-56合併區間

題目

給出一個區間的集合,請合併所有重疊的區間。

示例 1:

輸入: [[1,3],[2,6],[8,10],[15,18]]
輸出: [[1,6],[8,10],[15,18]]

思路

通過設定一個移動的判定區間,來完成區間的合併

首先對陣列排序,使其以左區間為標準,從小到大,依次排序,然後依次讀出陣列:

當取出的陣列的left <= 判定區間right 且取出的陣列的right >=判定區間right :則認為兩個區間有重合,合併區間

當取出的陣列的left >判定區間right:不存在重合,當新區間作為判定區間。

實現

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort()
        result 
= list() if not intervals: return [] result.append(intervals[0]) for idx in intervals: left = result[-1][0] right = result[-1][1] if idx[0] <= right and idx[1] >= right: result[-1][1] = idx[1] elif
idx[0] > right: result.append(idx) return result