普通数组----合并区间

🔥个人主页: Milestone-里程碑

❄️个人专栏: <<力扣hot100>> <<C++>><<Linux>>

<<Git>><<MySQL>>

🌟心向往之行必能至

题目描述

给定一个区间集合 intervals,其中每个区间为 [start_i, end_i]。要求合并所有重叠的区间,返回一个不重叠的区间数组,使其恰好覆盖输入中的所有区间。

示例 1 输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠,合并为 [1,6]。

示例 2 输入:intervals = [[1,4],[4,5]]输出:[[1,5]]解释:区间 [1,4] 和 [4,5] 可视为重叠区间。


解题思路

这道题的关键在于先排序,再合并。

  1. 排序我们首先对区间数组按照每个区间的左端点进行升序排序。这样可以保证在后续遍历中,我们只需要关注当前区间与结果数组中最后一个区间的关系。

  2. 合并

    • 初始化一个空的结果数组 p。
    • 遍历排序后的每个区间:
      • 如果结果数组为空,或者当前区间的左端点 > 结果数组最后一个区间的右端点,说明无重叠,直接将当前区间加入结果数组。
      • 否则,说明有重叠,需要合并:更新结果数组最后一个区间的右端点为两者的最大值。

完整 C++ 代码

cpp

复制代码
class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        // 按区间左端点升序排序
        sort(intervals.begin(), intervals.end());
        vector<vector<int>> p;
        for (auto& e : intervals) {
            // 如果结果为空,或当前区间与结果最后一个区间不重叠
            if (p.empty() || e[0] > p.back()[1]) {
                p.push_back(e);
            } else {
                // 重叠则合并,更新右端点为较大值
                p.back()[1] = max(p.back()[1], e[1]);
            }
        }
        return p;
    }
};

复杂度分析

  • 时间复杂度:\(O(n \log n)\),主要来自排序操作,遍历合并的时间为 \(O(n)\)。
  • 空间复杂度:\(O(n)\),主要用于存储结果数组(若忽略结果存储,排序的栈空间为 \(O(\log n)\))。

关键细节

  • 排序规则 :sort 默认按区间的第一个元素升序排列,这正好符合我们的需求。
  • 合并条件 :e[0] <= p.back()[1] 表示当前区间与结果最后一个区间有重叠或相邻。
  • 右端点更新 :使用 max 函数确保合并后的右端点是两个区间的最大值,避免出现左端点小但右端点也小的情况。
相关推荐
晒太羊的猫4 小时前
hot100 堆
数据结构
拓恒技术4 小时前
内河航道无人机智能巡检系统与算法应用
人工智能·深度学习·算法·无人机·智慧城市
啵啵啵鱼4 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践
数据结构·1024程序员节
如何原谅奋力过但无声4 小时前
【LeetCode hot100】代码随想录未cover部分
数据结构·算法·leetcode
INGNIGHT4 小时前
377.组合总和 Ⅳ(背包)
c++·算法·1024程序员节
“AI国潮设计-小江”4 小时前
AIGC实战:Python+SDXL批量生成英歌舞IP立牌,解锁猪猪蛋糕“反差萌”流量密码(附完整API源码)
开发语言·人工智能·python·prompt·aigc
Sirens.4 小时前
网络通信基础:IP、端口、协议分层与数据封装
java·网络·网络协议·tcp/ip·java-ee·1024程序员节
H.莓飛4 小时前
【数据结构】排序_OJ题(二):划分与选择
linux·服务器·c语言·开发语言·数据结构·visual studio
CRMEB系统商城5 小时前
服装连锁的导购分销与企微私域
java·大数据·开发语言·人工智能·小程序·php·1024程序员节
拓恒技术5 小时前
城市管理中的无人机AI识别算法:架构、场景与落地
人工智能·算法·视觉检测·无人机·1024程序员节