您的位置:首页 > 其它

**LeetCode 56. Merge Intervals

2016-01-23 01:26 344 查看
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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: