Merge Intervals

来源:互联网 发布:淘宝情趣珠内衣买家秀 编辑:程序博客网 时间:2024/06/04 23:37

题目描述:

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属性进行升序排序,然后一趟遍历合并存在重叠的间隔区间。


AC代码如下:

class Solution {public:vector<Interval> merge(vector<Interval>& intervals) {vector<Interval> ans;if (intervals.size() == 0) return ans;sort(intervals.begin(), intervals.end(), cmp);Interval cur = intervals[0];for (int i = 1; i < intervals.size(); ++i){if (intervals[i].start >= cur.start && intervals[i].start <= cur.end){cur = Interval(cur.start, max(cur.end, intervals[i].end));}else{ans.push_back(cur);cur = intervals[i];}}ans.push_back(cur);return ans;}static bool cmp(Interval& a, Interval& b){return a.start < b.start;}};


0 0
原创粉丝点击