
cpp
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if(intervals.empty()){//复习empty函数啊,日记1有的
return {};
}
// 按照区间的起始位置进行排序
sort(intervals.begin(), intervals.end());
vector<vector<int>> merged;
merged.push_back(intervals[0]);
for (int i = 1; i < intervals.size(); ++i) {
vector<int>& last = merged.back();//back取最后一个数组
if (intervals[i][0] <= last[1]) {
// 如果当前区间的起始位置小于或等于上一个区间的结束位置,则合并它们
last[1] = max(last[1], intervals[i][1]);
} else {
// 否则,添加一个新的区间
merged.push_back(intervals[i]);
}
}
return merged;
}
};
时间复杂度:O(n log n)
复习!排序算法的时间复杂度!日记2里也有!
空间复杂度:O(N)