多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > [LeetCode]56.Merge Intervals

[LeetCode]56.Merge Intervals

來源:程序員人生   發布時間:2015-02-13 08:19:31 閱讀次數:2413次

【題目】

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].

【分析】

(1)先將目標區間數組按X軸從小到大排序。例如:[2,3] [1,2] [3,9] ->[1,2] [2,3] [3,9]

(2)掃描排序后的目標區間數組,將這些區間合并成若干個互不相交的區間。例如 [2,3] [1,2] [4,9] ->[1,3]  [4,9]

這里分3種情況:

a:[1,3] [2,6]  -> [1,6]  第1個區間的end大于等于第2個區間的start,同時第2個區間的end大于第1個區間的end

b:[1,7] [2,4] -> [1,7]  第1個區間的end大于等于第2個區間的start,同時第2個區間的end小于第1個區間的end

c:[1,2] [3,4] -> [1,2] [3,4] 第1個區間的end小于第2個區間的start

【代碼】

/********************************* * 日期:2015-01⑴4 * 作者:SJF0115 * 題目: 56.Merge Intervals * 網址:https://oj.leetcode.com/problems/merge-intervals/ * 結果:AC * 來源:LeetCode * 博客: **********************************/ #include <iostream> #include <algorithm> #include <vector> using namespace std; struct Interval { int start; int end; Interval() : start(0), end(0) {} Interval(int s, int e) : start(s), end(e) {} }; class Solution { public: // 比較函數 static bool cmp(const Interval& ina,const Interval& inb){ return ina.start < inb.start; } vector<Interval> merge(vector<Interval> &intervals) { vector<Interval> result; int count = intervals.size(); if(count <= 1){ return intervals; }//if // x軸排序 sort(intervals.begin(),intervals.end(),cmp); // 合并 result.push_back(intervals[0]); // 斟酌3種情況 for(int i = 1;i < count;i++){ Interval preIn = result.back(); Interval curIn = intervals[i]; // [1,3] [2,6] if(curIn.start <= preIn.end && curIn.end > preIn.end){ preIn.end = curIn.end; result.pop_back(); result.push_back(preIn); }//if // [1,2] [3,4] else if(curIn.start > preIn.end){ result.push_back(curIn); } // [1,7] [2,3] 不用做任何事 }//for return result; } }; int main(){ Solution solution; Interval in1(1,2); Interval in2(4,6); Interval in3(8,10); Interval in4(15,18); vector<Interval> vec; vec.push_back(in1); vec.push_back(in2); vec.push_back(in3); vec.push_back(in4); // 合并 vector<Interval> v = solution.merge(vec); // 輸出 for(int i = 0;i < v.size();i++){ Interval in = v[i]; cout<<"["<<in.start<<","<<in.end<<"]"<<endl; }//for return 0; }



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 免费a级作爱片免费观看中 免费a网站 | 久久精品国产99久久6动漫欧 | 一本久草 | 国产亚洲在线观看 | 日韩一级淫片 | 国产91精品福利在线观看 | 亚洲精品日韩一区二区日本 | 日韩免费精品 | 久久久久久久综合日本亚洲 | 精彩视频一区二区三区 | 最新69国产成人精品视频69 | 亚洲一区综合 | 国产亚洲精品一区二区久久 | a视频免费在线观看 | 一级特黄aa大片免费播放视频 | 日本96在线精品视频免费观看 | 大香焦伊人 | 亚洲综合欧美日韩 | 特级aav毛片日本免费视频 | 91精品福利一区二区 | a久久久久一级毛片护士免费 | 波多野结衣在线资源 | 日本在线观看中文字幕 | 欧美金妇欧美乱妇xxxx | 欧美韩日国产 | 亚洲精品成人网久久久久久 | 亚洲精品高清国产一久久 | 韩国美女爽快一级毛片黄 | 欧美三级视频在线观看 | 亚洲五月婷婷 | 欧美精品黑人性xxxx | 在线成h人视频网站免费观看 | 欧美最猛黑人xxxxwww | 亚洲成人一区二区 | 精产国品一区 | 欧美午夜在线观看理论片 | 国产精品久久国产三级国不卡顿 | 国产精品无码久久久久 | 亚洲观看视频 | 在线视频久久 | 欧美性xxx久久|