题解 | #合并区间#
合并区间
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;
}
};
查看10道真题和解析
