LeetCode 56.合并区间
解题思路:参考了LeetCode官方的解答,基本思路就是先对intervals排序,排序之后intervals中每个数组[start, end]之间是连续的。此时我们看每个数组[start_i, end_i]中的start_i与前面的end相比,如果小于前一个的end,那么该[start_i, end_i],应该被合并区间[start, max(end, end_i)]
中。
代码实现:
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end());
vector<vector<int>> merged;
for (int i = 0; i < intervals.size(); ++i) {
int start = intervals[i][0], end = intervals[i][1];
if (!merged.size() || start > merged.back()[1]) {
merged.push_back({start, end});
} else {
merged.back()[1] = max(merged.back()[1], end);
}
}
return merged;
}
};