🔗 leetcode.cn/problems/me…
题目
- 给出若干区间的起始位置和结束位置 start_i, end_i
- 对这些重叠的区间进行合并,返回不重叠的区间数组
思路
- 模拟,根据 start_i 排序之后,根据 end_i 判断处理后续的区间是否可以合并,若不能,作为新的区间
代码
class Solution {
public:
static bool cmp(vector<int>& a, vector<int>& b) {
return a[0] < b[0]
}
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end(), cmp)
vector<vector<int>> ans
ans.push_back({intervals[0][0], intervals[0][1]})
int ans_index = 0
int end_curr = intervals[0][1]
for (int i = 1
int start_i = intervals[i][0], end_i = intervals[i][1]
ans_index = ans.size() -1
if (end_curr >= start_i) {
end_curr = max(end_curr, end_i)
ans[ans_index][1] = end_curr
} else {
ans.push_back({start_i, end_i})
end_curr = end_i
}
}
return ans
}
}