问题描述:
给出若干闭合区间,合并所有重叠的部分。
样例:
给出的区间列表 => 合并后的区间列表:
[ [
[1, 3], [1, 6],
[2, 6], => [8, 10],
[8, 10], [15, 18]
[15, 18] ]
]
解题思路:
按strat从小到大排序,然后用循环判断是否可以合并,合并之后删除多余的区间。
代码:
/**
* Definition of Interval:
* classs Interval {
* int start, end;
* Interval(int start, int end) {
* this->start = start;
* this->end = end;
* }
*/ bool comp(const Interval &a, const Interval &b) {
return a.start< b.start;
}
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
// write your code here
if (intervals.size()== 0||intervals.size()== 1) return intervals;
sort(intervals.begin(), intervals.end(), comp);
for (int i= 1; i< intervals.size(); i++) {
if (intervals[i].start<= intervals[i-1].end) {
if (intervals[i].end> intervals[i-1].end) {
intervals[i-1].end=intervals[i].end;
intervals.erase(intervals.begin()+i); i--;
} else {intervals.erase(intervals.begin()+i); i--;}
}
}
return intervals;
}
};
感想:
sort 函数的比较函数不能在类里定义。