LC56 合并区间
搞一个结果数组ans
,用来存结果,先排序sort
,对原数组扫一遍for
,如果原数组中当前元素的左区间值intervals[i][0]
要比结果数组中的最后一位的右区间ans.back()[1]
大的话,就将该元素插入进结果数组,此时这种情况是不存在交集。
如果不满足上面的条件,存在交集,进行更新结果数组中最后一位的右区间就可以了。
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if (!intervals.size()) return {};
sort(intervals.begin(), intervals.end());
vector<vector<int>> ans;
for (int i = 0; i < intervals.size(); i++) {
int l = intervals[i][0], r = intervals[i][1];
if (!ans.size() || l > ans.back()[1]) ans.push_back(intervals[i]);
else ans.back()[1] = max(r, ans.back()[1]);
}
return ans;
}
};