Leecode刷題筆記 56 合併區間

2021-10-04 12:43:55 字數 1285 閱讀 8161

題目要求:給出乙個區間的集合,請合併所有重疊的區間。

示例 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、首先對乙個二維陣列按照第0位的數字大小進行排序,會方便解題,但是對二維陣列進行排序需要重寫comparator的比較方法。

2、排好序之後,我們需要比較前乙個區間的第1位數字與後乙個區間第0個數字的大小,例如[1,3]和[2,6],我們比較3和2的大小,如果前乙個區間第1位數字大於後乙個區間第0位數字,那麼表示這兩個區間有交集,3比2大,說明[1,3]和[2,6]有交集,那麼就要合併這兩個區間,合併方式是取前乙個區間第1位與後乙個區間第1位的較大的數字,這裡是比較3與6的大小,6大,因此取6位合併後的右區間;如果如果前乙個區間第1位數字小於後乙個區間第0位數字,如[2,6]和[8,10],6比8小,因此這兩個區間沒有交集,那麼就把[2,6]區間存入list中,再使用[8,10]向下乙個區間作比較,以此類推,再將最後乙個迴圈存入list中。

3、最後得到的list不能直接返回,因為題目要求返回乙個二維陣列,那麼新建乙個二維陣列intres,for迴圈遍歷list,res[i]=list.get(i)即可。

class

solution

arrays.

sort

(intervals,

newcomparator

<

int[

]>()

}); list<

int[

]>list=

newarraylist

<

>()

;int

cur=intervals[0]

;for

(int i=

1;i)else

} list.

add(cur)

;int

res=

newint

[list.

size()

][2]

;for

(int i=

0;isize()

;i++

)return res;

}}

LeeCode刷題筆記

本來想在leecode題目頁面上做注釋的,結果沒找到位置,只好來這裡了 字串部分 14.最長公共字首 編寫乙個函式來查詢字串陣列中的最長公共字首。示例 1 輸入 flower flow flight 輸出 fl 自己做法 取第乙個string first,然後比較後面每個string的第 i 個元素...

Leetcode刷題筆記之56 合併區間

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

LeeCode刷題筆記 1

1.twosum 從今天開始好好刷題吧 此題用雜湊表即可求解,依題意不必在雜湊表建好之後進行尋找,而是在建表的同時進行尋找 這裡使用了乙個庫 注意即使題目說明了一定會有解,但是函式中還是要在無解的情況下返回乙個值 我的測試 如下 include include includeusing namesp...