第一道一遍过的中级题,有点激动~
当然是因为这道题不难啦QAQ
很容易想到要先按start排序啦,这里有个知识点,sort()有第三个参数,是一个函数,通过它我们可以指定排序的方式。注意,该函数必须为该类的static函数。
然后就是遍历数组,可以合并的合并,不能合并的丢到结果集里面。
/**
* 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 compare(Interval &a, Interval &b) {
return a.start<b.start;
}
vector<Interval> merge(vector<Interval>& intervals) {
sort(intervals.begin(), intervals.end(), compare);
vector<Interval> res;
int n = intervals.size();
if (n == 0) return res;
int i;
for (i = 0; i < (n-1); ++i) {
if (intervals[i].end < intervals[i+1].start) res.push_back(intervals[i]);
else {
intervals[i+1].start = intervals[i].start;
intervals[i+1].end = max (intervals[i+1].end, intervals[i].end);
}
}
res.push_back(intervals[i]);
return res;
}
};