日野弥生:勉強しよう

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;
    }
};

フラッシュタブ:LeetCode

题目链接:https://leetcode.cn/problems/merge-intervals

上一篇

LeetCode 35 - 搜索插入位置

下一篇

LeetCode 48 - 旋转图像