leetcode刷題-56合併區間
阿新 • • 發佈:2020-08-05
題目
給出一個區間的集合,請合併所有重疊的區間。
示例 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] elifidx[0] > right: result.append(idx) return result