题解 | #合并区间#
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
非常简洁的维护俩个指针
目前感觉这样写起来挺简单的,思路也是比较清晰,简单来说就是先排序,然后维护俩个指针去找不重复的区间就好了。
class Solution { public: vector<Interval> merge(vector<Interval> &intervals) { if(intervals.empty()) return {}; sort(intervals.begin(),intervals.end(),[](Interval a,Interval b){return a.start<b.start;}); int n=intervals.size(); int start=intervals[0].start; int end=intervals[0].end; vector<Interval> ans; int i=1; while(i<n) { if(intervals[i].start>end) { ans.push_back(Interval(start,end)); start=intervals[i].start; end=intervals[i].end; }else { //这一个选最大值非常的重要。 end=max(intervals[i].end,end); } i++; } ans.push_back(Interval(start,end)); return ans; } };