區間合併原理和規律

2021-10-06 17:49:22 字數 981 閱讀 3056

題目很好理解:

我們解決區間問題的一般思路是先排序,然後觀察規律

乙個區間可以表示為[start, end],以便滿足貪心選擇性質。而對於區間合併問題,其實按endstart排序都可以,不過為了清晰起見,我們選擇按start排序。

排序完成後:

簡單來說就是這樣:

#include

#include

#include

using

namespace std;

typedef pair<

int,

int>pii;

int n;

vector segs;

void

merge

(vector

&segs));

//區間不為空,則儲存結果

st = seg.first,ed = seg.second;

//然後更新當前維護的區間

}else ed =

max(ed,seg.second)

;//有交集,則更新右端點為最大值

if(st !=

-2e9

) res.

push_back()

;//判斷區間是否為空

segs = res;

}int

main()

);}merge

(segs)

; cout<

size()

<

return0;

}

區間 區間合併

用x,y表示乙個整數範圍區間,現在輸入一組這樣的範圍區間 用空格隔開 請輸出這些區間的合併。輸入描述 一行整數,多個區間用空格隔開。區間的逗號是英文本元。輸出描述 合併後的區間,用過空格隔開,行末無空格示例1 1,3 2,51,5示例2 1,3 2,5 8,10 11,151,5 8,10 11,1...

mysql合併到區間 合併區間

lc 合併區間 給出乙個區間的集合,請合併所有重疊的區間。示例 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 解釋 ...

56 57 合併區間 插入區間

給出乙個區間的集合,請合併所有重疊的區間。直接對區間起點進行排序,然後遍歷,判斷當前遍歷區間的起點是否在前一區間內,在的話,更新前一區間的終點為兩者終點最大值,不在的話直接將當前區間插入。class solution sort intervals.begin intervals.end const ...