56. Merge Interval

56. Merge Interval

0. 參考文獻

序號 文獻
1 花花醬 LeetCode 56. Merge Intervals
2 [LeetCode] Merge Intervals 合併區間

1. 題目

Given a collection of intervals, merge all overlapping intervals.html

Example 1:python

Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].

Example 2:數組

Input: [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.

NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.app

2. 思路

本題是對區間的合併。首先須要對輸入的區間按第一個數字進行排序。而後把數組的第一個區間放入結果集中,後續的區間依次和其比較。若是能合併就合併,不能的話就把當前區間放入結果集。ide

3. 實現

class Solution(object):
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[List[int]]
        """
        ret = []
        if len(intervals) == 0 :return ret
        ret = []
        intervals.sort(key = lambda x:x[0])
        
        ret.append(intervals[0])
        for i in range(1,len(intervals)):
            if intervals[i][0] >= ret[-1][0] and intervals[i][0] <= ret[-1][1] :
                t = [ret[-1][0],max(intervals[i][1],ret[-1][1])]
                ret[-1] = t
            else:
                ret.append(intervals[i])
        return ret
相關文章
相關標籤/搜索