給出乙個區間的集合,請合併所有重疊的區間。
示例 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] 可被視為重疊區間。
當區間按序排列時,如果用 [ left , right ]表示當前需要整合的區間,則 [ left , right ]需滿足:① left 是當前最小的 ② right 必須小於下乙個集合的 next-left。
依據這個思路:① left 按序取,且若儲存乙個已整合的 [ left , right ],left 指向下乙個集合的 next-left 即可 ② right需要和下乙個集合的next-left 比較,如小於,整合當前,若大於,則更換為next-right 繼續下一輪迴圈
但是提交後11 / 169個通過測試用例,一看區間是非按序排列:輸入:[[1,4],[0,4]] ,所以需要手動將它們排序,但是二維陣列無法直接排序,所以手動分為lefts左集合和rights右集合,等同於構建有序排列的區間集合即可用上述方法
class solution ;
left = lefts[i];
}//需整合,則更換為next-right 繼續下一輪迴圈
right = rights[i];
if(i == intervals.length -1);}}
int ret = new int[index+1][2];
system.arraycopy(intervals,0,ret,0,index+1);
return ret;
}}
LeetCode 56 合併區間 題解
題目大意 給定一組區間,然後將有重疊部分的區間合併,注意如果兩個區間僅有乙個數重疊也算,比如 1,4 與 4,5 分析 直接按照區間的左端點大小公升序排序,如果相同則比較右端點,均按公升序。排序後,如果後乙個區間的左端點小於等於前乙個區間的右端點,那麼我們就認為這兩個區間可以合併,否則將前乙個區間認...
leetcode56 區間合併
題目 給出乙個區間集合,求合併所有重疊後的區間。分析 區間處理先上套路,按左端點作第一維,右端點作第二維進行排序。依次考察每個區間,假設前面所有區間合併後是 left,right 若當前區間的左端點小於等於right,right max right,當前區間的右端點 否則說明有空格,將 left,r...
56 合併區間Leetcode
給出乙個區間的集合,請合併所有重疊的區間。示例 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.將...