合併區間問題

2021-09-02 22:53:55 字數 1125 閱讀 3085

法一:分類討論思想(排序後,不用管左區間,只更新,討論右邊區間)

法二:想象成一條線段,見下面**:

線段左端為最小左區間(minl),右端為最大右區間(maxr),

用兩個陣列存左右區間,有點就+1,最後遍歷,當兩個陣列不為零且出現次數相等就+1.(alll為左端點出現次數,allr為右端點出現次數)

測試用例:

樣例輸入

41 3

2 68 10

15 18

樣例輸出

1 68 10

15 18

**見下:

法一**:

#include

#include

#include

using namespace std;

struct pa[

10010];

intcmp

(p p1,p p2)

intmain()

//記錄第乙個區間的左右兩個值

int one = a[0]

.x;int tow = a[0]

.y;/*

例子:4

1 32 6

8 10

15 18

答案:1 6

8 10

15 18

*///從第二個開始比較

for(

int i=

1;i)else

if(i==n-1)

printf

("%d %d\n"

,one,tow);}

return0;

}

法二**:(記得找完乙個區間後,標記量要置為零)

#include

int a[

100100

],b[

100100];

intmain()

int _begin=0;

int alll=

0,allr=0;

for(i=minl;i<=maxr;i++)if

(b[i]!=0

)if(alll==allr&&alll&&allr)

}return0;

}

區間合併問題

給定 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...

合併區間問題

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...