LeetCode Hot100 之 17 合并区间

题目

分析

先将intervals按起始点升序排列,然后遍历,如果当前数组的起点小于前面数组的结束则需要合并,否则就直接加入返回数组。

代码

cpp 复制代码
class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        std::sort(intervals.begin(), intervals.end());
        std::vector<std::vector<int>> res;
        if (!intervals.empty()) {
            res.push_back(intervals[0]);
        }

        for (int i = 1; i < intervals.size(); ++i) {
            // 获取结果数组最后一个区间的引用
            std::vector<int>& last_merged = res.back();
            
            // 如果当前区间的开始小于等于上一个合并区间的结束,则合并
            if (intervals[i][0] <= last_merged[1]) {
                 // 合并:更新上一个区间的结束点为两者中较大的
                last_merged[1] = std::max(last_merged[1], intervals[i][1]);
            } else {
                // 否则,无重叠,直接添加新区间
                res.push_back(intervals[i]);
            }
        }
        return res;
    }
};

结果

相关推荐
大熊背36 分钟前
树莓派IspPipeline LSC模块原理详解
算法·lsc·isppipeline·mesh lsc
测试199844 分钟前
Selenium 无法定位元素的几种解决方案
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
zander2581 小时前
LeetCode 300. 最长递增子序列
算法·leetcode·深度优先
欧叶冲冲冲1 小时前
Python常见数据结构的CRUD(LeetCode高频版速查)
数据结构·python·leetcode
祖力552 小时前
Linux应用软件编程:目录IO与framebuffer
linux·运维·算法·framebuffer·目录io
名字还没想好☜2 小时前
Go 用 slices/maps 标准库泛型函数:告别手写 Contains、Sort、去重(Go 1.21)
开发语言·后端·算法·golang·go
地平线开发者2 小时前
【模型轻量化专题】深度学习模型为什么需要轻量化
算法
圣保罗的大教堂2 小时前
leetcode 3622. 判断整除性 简单
leetcode
_Narcissus_2 小时前
链表算法题和静态链表
数据结构·c++·笔记·算法·链表·ai·力扣
Lyyaoo.3 小时前
【普通数组】【中等】除了自身以外数组的乘积
数据结构·算法·leetcode