日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

merge intervals(合并间隔)

發(fā)布時間:2023/11/30 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 merge intervals(合并间隔) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Given a collection of intervals, merge all overlapping intervals.

For example,
Given?[1,3],[2,6],[8,10],[15,18],
return?[1,6],[8,10],[15,18].

?

?

題目沒有說所有間隔的start是依次增加的。所以,為了方便討論,我們要將所有間隔按照start升序排列。因?yàn)殚g隔增加,就只需討論end和下一個間隔。
結(jié)果集中是沒有交叉出現(xiàn)的,排序后,遍歷下一個時,只會跟結(jié)果集最后一個產(chǎn)生交叉,而不會跟在前的結(jié)果產(chǎn)生交叉(因?yàn)榻Y(jié)果集中,最后一個間隔的start>前一個的end)
排列結(jié)束后,我們只需要討論后一個跟前一個結(jié)果,如果后一個間隔的start大于前一個結(jié)果集中的間隔的end,那么沒有交叉,直接添加 結(jié)果集。
否則該間隔就和結(jié)果集中最后一個間隔有交叉,這時要討論該間隔的end和結(jié)果集中最后一個間隔的end大小,前者大,就要刪除結(jié)果集最后一個,然后將前者加入結(jié)果集;如果后者大,說明只是end和start交叉了,這樣刪除結(jié)果集最后一個,添加新的間隔。見代碼。

?

/*** 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 List<Interval> merge(List<Interval> intervals) {List<Interval> res=new ArrayList<Interval>();if(intervals==null||intervals.size()<=1) return intervals;Collections.sort(intervals,new Comparator<Interval>(){public int compare(Interval o1,Interval o2){return o1.start-o2.start;}});res.add(intervals.get(0));for(int i=1;i<intervals.size();i++){Interval in1=res.get(res.size()-1); //結(jié)果集中最后一個間隔,用于比較Interval in2=intervals.get(i); //當(dāng)前間隔,只會與結(jié)果集中最后一個間隔產(chǎn)生交集。if(in1.end<in2.start) res.add(in2); //沒有交叉。直接加入else { //有交叉if(in1.end>=in2.end) continue;//前一個包含后一個,跳過else{ //只是start和end交叉res.remove(res.size()-1);res.add(new Interval(in1.start,in2.end));}}}return res;} }

?

轉(zhuǎn)載于:https://www.cnblogs.com/xiaolovewei/p/8204717.html

總結(jié)

以上是生活随笔為你收集整理的merge intervals(合并间隔)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。