Leetcode 56 合并區(qū)間

合并區(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ū)間熬词。
    

解答

  • 思路:

    • 首先對輸入的區(qū)間數(shù)組進行排序旁钧;
    • 接著用兩個指針,cur指向當前處理的區(qū)間互拾,next指向下一個要處理的區(qū)間歪今;
    • 根據(jù)cur和next所指區(qū)間的情況,分別處理:
      • intervals[cur] 和 intervals[next]區(qū)間沒有重疊颜矿,則令intervals[cur + 1] = intervals[next], cur++, next++
      • intervals[cur][1]= intervals[next][0]寄猩,則令 intervals[cur][1] = max(intervals[cur][1], intervals[next][1]), next++
  • 代碼:

    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype List[List[int]]
    
        (Knowledge)
    
        思路:
        1. 首先對輸入的區(qū)間數(shù)組進行排序;
        2. 接著用兩個指針骑疆,cur指向當前處理的區(qū)間田篇,next指向下一個要處理的區(qū)間替废;
        3. 根據(jù)cur和next所指區(qū)間的情況,分別處理:
            - intervals[cur] 和 intervals[next]區(qū)間沒有重疊泊柬,則令intervals[cur + 1] = intervals[next], cur++, next++
            - intervals[cur][1] >= intervals[next][0]椎镣,則令intervals[cur][1] = max(intervals[cur][1], intervals[next][1]), next++
        4. 最后返回intervals[:cur + 1]
        """
    
        # 首先對輸入的區(qū)間數(shù)組進行排序
        intervals = sorted(intervals)
        cur, next = 0, 1
    
        while next < len(intervals):
            if intervals[next][0] > intervals[cur][1]:  # 處理沒有重疊的情況
                intervals[cur + 1], cur, next = intervals[next], cur + 1, next + 1
            else:   # 處理有重疊的情況
                intervals[cur][1], next = max(intervals[cur][1], intervals[next][1]), next + 1
    
        return intervals[:cur + 1]
    

測試驗證

class Solution:
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype List[List[int]]

        (Knowledge)

        思路:
        1. 首先對輸入的區(qū)間數(shù)組進行排序;
        2. 接著用兩個指針兽赁,cur指向當前處理的區(qū)間状答,next指向下一個要處理的區(qū)間;
        3. 根據(jù)cur和next所指區(qū)間的情況刀崖,分別處理:
            - intervals[cur] 和 intervals[next]區(qū)間沒有重疊惊科,則令intervals[cur + 1] = intervals[next], cur++, next++
            - intervals[cur][1] >= intervals[next][0],則令intervals[cur][1] = max(intervals[cur][1], intervals[next][1]), next++
        4. 最后返回intervals[:cur + 1]
        """

        # 首先對輸入的區(qū)間數(shù)組進行排序
        intervals = sorted(intervals)
        cur, next = 0, 1

        while next < len(intervals):
            if intervals[next][0] > intervals[cur][1]:  # 處理沒有重疊的情況
                intervals[cur + 1], cur, next = intervals[next], cur + 1, next + 1
            else:  # 處理有重疊的情況
                intervals[cur][1], next = max(intervals[cur][1], intervals[next][1]), next + 1

        return intervals[:cur + 1]


if __name__ == '__main__':
    solution = Solution()
    print(solution.merge([[1, 3], [2, 6], [8, 10], [15, 18]]), "= [[1, 6], [8, 10], [15, 18]]")
    print(solution.merge([[1, 4], [4, 5]]), "= [[1, 5]]")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亮钦,一起剝皮案震驚了整個濱河市馆截,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜂莉,老刑警劉巖蜡娶,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異映穗,居然都是意外死亡翎蹈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門男公,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荤堪,“玉大人,你說我怎么就攤上這事枢赔〕窝簦” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵踏拜,是天一觀的道長碎赢。 經(jīng)常有香客問我,道長速梗,這世上最難降的妖魔是什么肮塞? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮姻锁,結(jié)果婚禮上枕赵,老公的妹妹穿的比我還像新娘。我一直安慰自己位隶,他們只是感情好拷窜,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般篮昧。 火紅的嫁衣襯著肌膚如雪赋荆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天懊昨,我揣著相機與錄音窄潭,去河邊找鬼。 笑死酵颁,一個胖子當著我的面吹牛狈孔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播材义,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嫁赏!你這毒婦竟也來了其掂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤潦蝇,失蹤者是張志新(化名)和其女友劉穎款熬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攘乒,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡贤牛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了则酝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殉簸。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沽讹,靈堂內(nèi)的尸體忽然破棺而出般卑,到底是詐尸還是另有隱情,我是刑警寧澤爽雄,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布蝠检,位于F島的核電站,受9級特大地震影響挚瘟,放射性物質(zhì)發(fā)生泄漏叹谁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一乘盖、第九天 我趴在偏房一處隱蔽的房頂上張望焰檩。 院中可真熱鬧,春花似錦订框、人聲如沸锅尘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藤违。三九已至浪腐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間顿乒,已是汗流浹背议街。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留璧榄,地道東北人特漩。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像骨杂,于是被迫代替她去往敵國和親涂身。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351