https://leetcode.com/problems/merge-intervals/
虽然是Hard 但是并不难,但是WA了
问题在于 自己没有好好动手模拟,选择的分隔的标准有问题
方法一:
线段树涂色问题
方法二:
先把区间按照左端点排序 左端点一样就按照右端点排序,然后st en分别标记当前的区间,如果发现interval[i+1]>st 就存入ret,更新St和en
bool cmp(const Interval a, const Interval b) {
if(a.start != b.start) {
return a.start < b.start;
} else {
return a.end < b.end;
}
}
class Solution {
public:
vector<Interval> merge(vector<Interval>& intervals) {
vector <Interval> ret;
int flag = 0;
if(intervals.size() == 0)return ret;
sort(intervals.begin(), intervals.end(), cmp);
int st=intervals[0].start, en=intervals[0].end;
for(int i=0;i<intervals.size()-1;i++) {
if(intervals[i+1].start>en) {
ret.push_back( Interval(st, en) );
st = intervals[i+1].start;
en = intervals[i+1].end;
} else {
st = min(st, intervals[i+1].start);
en = max(en, intervals[i+1].end);
}
}
ret.push_back( Interval(st, en) );
return ret;
}
};