算法题反正只写 hot 100 ,其他的太多了,算法题可以认为是无穷无尽的,我把一些基本的写一下就可以了。达到一个平均水平就OK了,要是让自己做到那种秒杀算法题的水平,第一,难度太大,第二,边际效应,收益太小,第三,太累,第四,我还有其他的事情要做。我发现这个题和 acwing 907 是同一个题。但是我没有那么会写。好像就是写一个贪心就行了。但是我没有那么会写。我好菜啊。呜呜呜。关键就是对左端点排序,然后更新右端点就可以,当然了,如果没有重合就添加到结果数组里面就可以了。
cpp
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if ( intervals.empty() ) {
return{};
}
sort( intervals.begin(), intervals.end() );
vector<vector<int>> res;
res.push_back( intervals[0] );
for ( int i = 1; i < intervals.size(); i++ ) {
auto& last = res.back();
if ( intervals[i][0] <= last[1] ) {
last[1] = max( intervals[i][1], last[1] );
} else {
res.push_back( intervals[i] );
}
}
return res;
}
};