LeetCode 56.合并区间

本文介绍了解决LeetCode56.合并区间问题的方法。通过先对输入区间进行排序,然后遍历每个区间,若当前区间的开始时间大于已合并区间最后一个区间的结束时间,则将当前区间加入合并区间列表;反之则更新已合并区间最后一个区间的结束时间为两个区间结束时间的最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值