LeetCode56. Merge Intervals
题目: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]
.
题目分析:很简单的一道题,首先先给这些间隔排序,按照首数字最大来从小到大排序
然后遇到
if (intervals[i].start <= tmp.end&&intervals[i].start >= tmp.start) {
res[index].start = tmp.start;
res[index].end = intervals[i].end > tmp.end ? intervals[i].end :tmp.end;
tmp = res[index];
}
然后进行合并,其余保留。
代码如下
bool comp(Interval a, Interval b) { return a.start<b.start; } class Solution { public: vector<Interval> merge(vector<Interval>& intervals) { sort(intervals.begin(), intervals.end(), comp); vector<Interval> res; Interval tmp; if (intervals.empty()) return res; tmp = intervals[0]; int index = 0; res.push_back(tmp); for (int i = 1; i < intervals.size(); i++) { if (intervals[i].start <= tmp.end&&intervals[i].start >= tmp.start) { res[index].start = tmp.start; res[index].end = intervals[i].end > tmp.end ? intervals[i].end :tmp.end; tmp = res[index]; } else { res.push_back(intervals[i]); tmp = intervals[i]; index++; } } return res; } };