日野弥生:勉強しよう
LeetCode 56 - 合并区间
发表于2024年12月13日
一定是先排序,让所有的相邻区间尽可能的重叠在一起,按左边界进行排序。
按照左边界从小到大排序之后,如果 $intervals[i][0] <= intervals[i - 1][1]$ 即 $intervals[i]的左边界 <= intervals[i - 1]的右边界$, 则一定有重叠。
class Solution {
public:
vector< vector< int > > merge(vector< vector< int> >& intervals) {
vector< vector< int > > result;
std::sort(intervals.begin(), intervals.end(), [](const auto&a, const auto&b)
{
return a[0]< b[0];
});
result.push_back(intervals[0]);
for(int i =1;i< intervals.size();i++)
{
if(intervals[i][0]<=result.back()[1])
result.back()[1] = max(result.back()[1], intervals[i][1]);
else
result.push_back(intervals[i]);
}
return result;
}
};