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

结果

相关推荐
WL_Aurora1 分钟前
备战蓝桥杯国赛【Day 9】
python·算法·蓝桥杯
June bug2 分钟前
【雅思学习笔记】口语Part1&3常见回答句型
职场和发展·学习方法
洛水水5 分钟前
【力扣100题】20.合并 K 个升序链表
算法·leetcode·链表
闻缺陷则喜何志丹6 分钟前
【动态规划 前缀和】P7074 [CSP-J2020] 方格取数|普及+
c++·算法·前缀和·动态规划·洛谷
Liangwei Lin1 小时前
LeetCode 74. 搜索二维矩阵
算法·leetcode·矩阵
phltxy1 小时前
Redis Hash 数据类型:详解命令与实战场景
redis·算法·哈希算法
放羊郎8 小时前
基于ORB-SLAM2算法的优化工作
人工智能·算法·计算机视觉
mask哥9 小时前
力扣算法java实现汇总整理(上)
java·算法·leetcode
如果'\'真能转义说9 小时前
OOXML 文档格式剖析:哈希、ZIP结构与识别
xml·算法·c#·哈希算法
梦梦代码精11 小时前
BuildingAI 上部署自定义工作流智能体:5 个实用技巧
大数据·人工智能·算法·开源软件