摘要:題目地址題目描述給出一個區間的集合,請合并所有重疊的區間。示例輸入輸出解釋區間和重疊將它們合并為示例輸入輸出解釋區間和可被視為重疊區間。解答按照區間起始節點排序。否則把列表最后一個區間和當前區間合并。
題目地址:
https://leetcode-cn.com/probl...
題目描述:
給出一個區間的集合,請合并所有重疊的區間。
示例 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] 可被視為重疊區間。
解答:
按照區間起始節點排序。
然后合并即可,這題難的是怎么寫出完美的合并代碼。
判斷邏輯是如果ans列表為空或者ans列表最后一個區間和當前區間不相交就加入當前區間。
否則把ans列表最后一個區間和當前區間合并。
java ac代碼:
/** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interval(int s, int e) { start = s; end = e; } * } */ class Solution { public Listmerge(List intervals) { Collections.sort(intervals, new Comparator () { @Override public int compare(Interval o1, Interval o2) { if(o1.start != o2.start) return o1.start-o2.start; return o1.end-o2.end; } }); List ans = new ArrayList(intervals.size()); for(int i = 0;i < intervals.size();i++) if(ans.size() == 0||ans.get(ans.size()-1).end < intervals.get(i).start) ans.add(intervals.get(i)); else ans.get(ans.size()-1).end =Math.max(intervals.get(i).end,ans.get(ans.size()-1).end ); return ans; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73418.html
摘要:圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的一個圖,寫出一個函數找到所有的最小高度樹并返回他們的根節點。因此使用一個數組代表每個節點的入度,若入度為就是葉子節點。 題目地址:https://leetcode-cn.com/probl...題目描述: 對于一個具有樹特征的無向圖,我們可選擇任何一個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小...
摘要:關于遞歸這里提一兩點遞歸基本有這幾步遞歸的模板,終止條件,遞歸調用,邏輯處理。 ?作者簡介:大家好,我是車神哥,府學路18號的車神? ?個人主頁:應無所住而生...
摘要:對于每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束坐標。可以射出的弓箭的數量沒有限制。弓箭一旦被射出之后,可以無限地前進。我們想找到使得所有氣球全部被引爆,所需的弓箭的最小數量。解答這是一道區間覆蓋問題,不太好說清楚,利用模板即可。 題目地址:https://leetcode-cn.com/probl...題目描述:在二維空間中有許多球形的氣球。對于每個氣球,提供的輸入是水平方...
閱讀 2628·2021-11-19 09:56
閱讀 874·2021-09-24 10:25
閱讀 1632·2021-09-09 09:34
閱讀 2195·2021-09-09 09:33
閱讀 1052·2019-08-30 15:54
閱讀 542·2019-08-29 18:33
閱讀 1264·2019-08-29 17:19
閱讀 505·2019-08-29 14:19