LeetCode HOT100 - 合并区间
代码跑的挺慢的
排序,第一维升序第二维降序
然后每次维护当前的 r(因为 l 一定是递增的)
如果新区间的 l 小于等于 r ,那么就说明重叠了,于是扩大区间
否则把现在的 (l, r) 区间放入
这样完整的扫一遍后就得到结果
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& a) {
sort(a.begin(), a.end(), [&](vector<int> i, vector<int> j){
if (i[0] == j[0]) {
return i[1] > j[1];
}
return i[0] < j[0];
});
vector<vector<int>> ans;
int n = a.size();
int l = a[0][0], r = a[0][1];
for (int i = 1; i < n; i++) {
if (a[i][0] <= r) {
r = max(r, a[i][1]);
} else {
ans.push_back({l, r});
l = a[i][0];
r = a[i][1];
}
}
ans.push_back({l, r});
return ans;
}
};
看了眼题解,思路好像都是相同的,可能是实现上的问题

浙公网安备 33010602011771号