演算法題 合併區間

2021-10-18 23:50:31 字數 1545 閱讀 7338

以陣列 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] = [sta

rtistart_i

starti

​, end

iend_i

endi

​] 。請你合併所有重疊的區間,並返回乙個不重疊的區間陣列,該陣列需恰好覆蓋輸入中的所有區間。

示例 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]

]解釋:區間 [1,4] 和 [4,5] 可被視為重疊區間。

1 <= intervals.length <= 104

intervals[i].length == 2

0 <= starti <= endi <= 104

如何合併區間?

首先,要依照區間的左端點大小進行排序

然後比較當前區間右值和下乙個區間的左值

2.1 若後者大於前者,如(2,5)(10,11),則不能合併

2.2 若前者大於右者,則可以合併。如包含關係,(1,9)(2,5)合併為(1,9);重合關係(0,2)(1,9)合併為(0,9))

c++

注意點:

merged看起來沒有初始化,實際上利用if語句的!merged.size()推入了第乙個元素,即完成了初始化

sort函式對二維陣列的排序規則參考這篇文章

檢視**提示提供的**過載,可以看到被編譯器自動搞成了vector。

演算法題 合併區間 Go題解

給出乙個區間的集合,請合併所有重疊的區間。示例 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 可被視為重疊區間。題目 以每個...

區間合併演算法

問題 對輸入的區間如 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。輸出格式 共一行,包含乙個整數,表示合併區間完成後的區間個數...