代码跑的挺慢的
排序,第一维升序第二维降序
然后每次维护当前的 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;}
};
看了眼题解,思路好像都是相同的,可能是实现上的问题
