本文主要是介绍**LeetCode 56. Merge Intervals,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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;}
};
这篇关于**LeetCode 56. Merge Intervals的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!