排序 Leetcode 56 合并區(qū)間

題目

給出一個區(qū)間的集合,請合并所有重疊的區(qū)間。

示例 1:

輸入: [[1,3],[2,6],[8,10],[15,18]]
輸出: [[1,6],[8,10],[15,18]]
解釋: 區(qū)間 [1,3] 和 [2,6] 重疊, 將它們合并為 [1,6].
示例 2:

輸入: [[1,4],[4,5]]
輸出: [[1,5]]
解釋: 區(qū)間 [1,4] 和 [4,5] 可被視為重疊區(qū)間。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/merge-intervals
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

解題思路

  • 先將區(qū)間按照左半邊排序。這里使用了lambda函數(shù)。
  • 依次拿出每一個區(qū)間和前一個對比,如果能合并就合并;否則加入一個新的區(qū)間。

代碼

class Solution(object):
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[List[int]]
        """
        if not intervals or len(intervals) == 1:
            return intervals
        
        intervals.sort(key = lambda x:x[0])
        
        res = [intervals[0]]
        
        for i in range(1, len(intervals)):
            temp = intervals[i]
            
            if temp[0] <= res[-1][1]:
                res[-1][1] = max(res[-1][1], temp[1])
                
            else:
                res.append(temp)
        
        return res
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 知識點總結(jié) 二分查找法(二分查找法是弱點)**以及相關(guān)的操作:遞歸實現(xiàn)和非遞歸實現(xiàn),floor 和 ceiling...
    李威威閱讀 996評論 0 0
  • 題目給出一個區(qū)間的集合,請合并所有重疊的區(qū)間。 示例 1:輸入: [[1,3],[2,6],[8,10],[15,...
    HITZGD閱讀 350評論 0 2
  • 題目描述:給出一個區(qū)間的集合,請合并所有重疊的區(qū)間。 示例 1: 輸入: [[1,3],[2,6],[8,10],...
    大數(shù)據(jù)Zone閱讀 528評論 0 4
  • 輸入一批區(qū)間,輸出合并后的區(qū)間 示例: 輸入: [[1,3],[2,6],[8,10],[15,18]] 輸出: ...
    劃水者閱讀 4,766評論 0 2
  • 最近沒有控制飲食,睡覺的時候都還覺得飽飽的,今天一稱,竟然超過了三位數(shù),感覺把自己打入了地洞!要想減肥,控制飲食及...
    做一只勇敢的鳥閱讀 193評論 0 0

友情鏈接更多精彩內(nèi)容