leetcode 合併區間 貪心

2021-10-10 05:15:25 字數 1030 閱讀 3019

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

示例 1:

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

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

解釋: 區間 [1,3] 和 [2,6] 重疊, 將它們合併為 [1,6].

示例 2:

輸入: intervals = [[1,4],[4,5]]

輸出: [[1,5]]

解釋: 區間 [1,4] 和 [4,5] 可被視為重疊區間。

注意:輸入型別已於2023年4月15日更改。 請重置預設**定義以獲取新方法簽名。

intervals[i][0] <= intervals[i][1]

這種區間問題很容易聯想到貪心,將所有區間按 l 或 r 排序。關鍵問題是怎麼樣排序更方便。

一開始我的思路是按 r 從小到大排序(因為之前做的一些區間題都是對 r 排序),但比比划划都沒辦法找出乙個好方法(或者說很難證明這樣貪心是對的),隨後我就失去了耐心,看了題解,發現大家都是按 l 從小到大排序。比比划划一番,就做好了。

直接上**吧,解釋起來有點麻煩,但思路並不複雜,關鍵就是怎麼樣才能想到按 l 從小到大排序(這個我做不來),排序後分類討論各種情況就可。

class

solution

;static

bool

cmp(

const node &a,

const node &b)

vectorint>>

merge

(vectorint>>

& intervals);}

sort

(arr,arr+n,cmp)

; t = arr[0]

;for

(int i =

1;i < n;i++))

, t = arr[i];}

ans.

push_back()

;return ans;}}

;

leetcode 56 合併區間(貪心)

給出乙個區間的集合,請合併所有重疊的區間。示例 給出 1,3 2,6 8,10 15,18 返回 1,6 8,10 15,18 貪心,先以start大小排序,這樣保證start的是有序的。然後擴張end。也很容易理解,複雜度是nlogn definition for an interval.stru...

openjudge 區間合併(貪心)

總時間限制 1000ms 記憶體限制 65536kb 描述 給定 n 個閉區間 ai bi 其中i 1,2,n。任意兩個相鄰或相交的閉區間可以合併為乙個閉區間。例如,1 2 和 2 3 可以合併為 1 3 1 3 和 2 4 可以合併為 1 4 但是 1 2 和 3 4 不可以合併。我們的任務是判斷...

LeetCode 區間合併

區間合併 給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。i...