属于区间的第一类题型:贪心解决。
思路:先将坐标从小到大排序,然后遍历一遍判断即可。
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end());
vector<vector<int>> ans;
int l = intervals[0][0], r = intervals[0][1], n = intervals.size();
for (int i = 1; i < n; ++i) {
if (intervals[i][0] <= r) {
//r = intervals[i][1];
r = max(r, intervals[i][1]);
}else {
ans.push_back(vector<int>{l, r});
l = intervals[i][0];
r = intervals[i][1];
}
}
ans.push_back(vector<int>{l, r});
return ans;
}
};
易错点:
如果intervals[i][0] <= r,r更新为r和intervals[i][1]的最大值,而不是intervals[i][1]。