演算法題 合併區間 Go題解

2021-10-05 03:01:04 字數 1213 閱讀 4918

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

示例 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的區間資料排序好的前提下,遍歷判斷每個區間的起始位置是否大於上一結果區間的結束位置,進行結果區間更新或插入操作。

go解題**

import

"sort"

//實現sort的inte***ce,用來進行本題二維陣列的排序

type int2slice [

]int

func

(s int2slice)

less

(i, j int

)bool

func

(s int2slice)

len(

)int

func

(s int2slice)

swap

(i, j int

)func

merge

(intervals [

]int)[

][]int

} intslice :=

int2slice

(intervals)

sort.

sort

(intslice)

res :=

intfor i :=

1; i <

len(intslice)

; i ++

else}}

return res

}

演算法題 合併區間

以陣列 intervals 表示若干個區間的集合,其中單個區間為 intervals i sta rtistart i starti end iend i endi 請你合併所有重疊的區間,並返回乙個不重疊的區間陣列,該陣列需恰好覆蓋輸入中的所有區間。示例 1 輸入 intervals 1,3 2,...

區間合併演算法

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