區間合併問題

2021-09-28 10:25:58 字數 579 閱讀 9938

給定 n 個閉區間 [ai; bi],其中i=1,2,…,n。任意兩個相鄰或相交的閉區間可以合併為乙個閉區間。例如,[1;2] 和 [2;3] 可以合併為 [1;3],[1;3] 和 [2;4] 可以合併為 [1;4],是[1;2] 和 [3;4] 不可以合併。

運用分治的思想

#include

#include

using

namespace std;

struct block

;bool

cmp(block f, block e)

block unionn

(block b,

int f,

int l)

else

}int

main()

sort

(b+1

,b+n+

1,cmp)

; temp=

unionn

(b,1

,n);

cout<" "

}

運用的是 先將大陣列分成兩份左右兩個先進行比較

合併區間問題

法一 分類討論思想 排序後,不用管左區間,只更新,討論右邊區間 法二 想象成一條線段,見下面 線段左端為最小左區間 minl 右端為最大右區間 maxr 用兩個陣列存左右區間,有點就 1,最後遍歷,當兩個陣列不為零且出現次數相等就 1.alll為左端點出現次數,allr為右端點出現次數 測試用例 樣...

合併區間問題

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 解釋 區...

區間排程之區間合併問題

還是先看一道題 一 解題思路 乙個區間可以表示為 start,end 區間重疊區間排程問題,需要按 end 排序,以便滿足貪心選擇性質。而對於區間合併問題,其實按 end 和 start 排序都可以,不過為了清晰起見,我們選擇按 start 排序。顯然,對於幾個相交區間合併後的結果區間 x,x.st...