国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LeetCode OJ 56. Merge Intervals

2019-11-06 06:06:25
字體:
來源:轉載
供稿:網友

LeetCode OJ 56. Merge Intervals


Description

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

解題思路

這道題的題意是將重疊的區間合并起來。 首先需要將Intervals集合進行排序,按照第一個元素的升序進行排序。初始化結果集合只有第一個區間,將結果結合的最后一個元素和排序后的集合的當前下標的區間進行比較。eg. ,[a, b][c, d]b <= c < d時,需要將這兩個區間合并為[a, d] 并存入結果中作為當前結果結合的最后一個元素。否則將[c, d] 存入結果集合中。如此循環直到集合訪問完畢,最后的結果也就得到了。

note:

std::sort函數是全局的,如果第三個參數cmp不是靜態成員函數或者全局函數,運行都會報錯。非靜態函數是依賴于具體對象的,因此調用sort函數時,只能調用不依賴于對象的靜態函數cmp。

代碼

個人github代碼鏈接

/** * Definition for an interval. * 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(Interval i, Interval j){ return i.start < j.start; } vector<Interval> merge(vector<Interval>& intervals) { if(intervals.size() == 0 || intervals.size() == 1) return intervals; vector<Interval> ans; sort(intervals.begin(), intervals.end(), cmp); ans.push_back(intervals[0]); for(int i = 1; i < intervals.size(); i++){ Interval tmp = ans[ans.size() - 1]; while(tmp.end >= intervals[i].end && i < intervals.size()) i++; if(i == intervals.size()) //confirm the border break; if(tmp.end >= intervals[i].start && tmp.end < intervals[i].end) { Interval t = Interval(tmp.start, intervals[i].end); ans.pop_back(); ans.push_back(t); } else if(tmp.end < intervals[i].start) { ans.push_back(intervals[i]); } } return ans; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰县| 通海县| 施秉县| 九龙县| 称多县| 金湖县| 忻州市| 健康| 略阳县| 布拖县| 繁峙县| 高州市| 平昌县| 苏尼特左旗| 二连浩特市| 宁波市| 临武县| 敦煌市| 陈巴尔虎旗| 宜阳县| 息烽县| 桂林市| 班戈县| 永丰县| 专栏| 合阳县| 临桂县| 聂拉木县| 临洮县| 北安市| 建始县| 北辰区| 石城县| 峨眉山市| 怀来县| 云和县| 肇庆市| 武威市| 阿拉善右旗| 房产| 青河县|