演算法之合併區間

2021-09-11 19:55:35 字數 1080 閱讀 3477

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

示例 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] 可被視為重疊區間。

思路:先進行排序(這樣效率會高上不少 ),然後逐個取出間隔,能合併就合併到cur_interval,不能合併,就將之前的放到res,更新cur_interval

public

class

interval

interval

(int s,

int e)

}static

class

solution

if(intervals.

size()

<=1)

//對intervals排序

collections.

sort

(intervals,

newcomparator

()})

; list

res=

newarraylist

<

>()

; interval cur_interval=intervals.

get(0)

; interval next_interval=null;

for(

int i=

1;isize()

;i++

)else

if(cur_interval.end>=next_interval.start&&cur_interval.end<=next_interval.end)

} res.

add(cur_interval)

;return res;

}}

區間合併演算法

問題 對輸入的區間如 1,2 2,6 3,5 7,9 進行合併,輸出 1,6 7,9 思路1 如果資料較小,可開闢一大陣列,如上述資料,開闢乙個大小為100的布林型陣列對在區間內的賦值true。掃瞄輸出為true的數字。思路2 定義left和right,1 開始left和right分別為第乙個區間的...

演算法(區間合併)

給定 n 個區間 li,ri 要求合併所有有交集的區間。注意如果在端點處相交,也算有交集。輸出合併完成後的區間個數。例如 1,3 和 2,6 可以合併為乙個區間 1,6 輸入格式 第一行包含整數n。接下來n行,每行包含兩個整數 l 和 r。輸出格式 共一行,包含乙個整數,表示合併區間完成後的區間個數...

區間合併演算法

兩個區間的關係無非就下面幾種 這裡說的左端點是指下面那個區間的左右端點,內外指的是下面區間相較於上面區間的位置關係 左端點 1.區間內 2.區間外 右端點 1.區間內 2.區間外 左1右1,左1右2,左2右1,左2右2 左2右1這種情況是不可能的,所以一共就3種可能的關係 1.2.3.針對3種不同的...