題目很好理解:
我們解決區間問題的一般思路是先排序,然後觀察規律
乙個區間可以表示為[start, end]
,以便滿足貪心選擇性質。而對於區間合併問題,其實按end
和start
排序都可以,不過為了清晰起見,我們選擇按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 ...