題目要求:給出乙個區間的集合,請合併所有重疊的區間。思路如下:示例 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...