【leetcode面试经典150题】49. 合并区间(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C++语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致)

【题目描述】

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [,]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间

【示例一】

复制代码
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

【示例二】

复制代码
输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

【提示及数据范围】

  • 1 <= intervals.length <= 10的4次方
  • intervals[i].length == 2
  • 0 <= <= <= 10的4次方

【代码】

cpp 复制代码
class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        vector<vector<int>> res;
        sort(intervals.begin(), intervals.end());

        for (auto intr : intervals) {
            if (res.empty() || res.back()[1] < intr[0])
                res.push_back(intr);
            else {
                res.back()[1] = max(res.back()[1], intr[1]);
            }
        }
        return res;
    }
};
相关推荐
Coovally AI模型快速验证6 分钟前
检测+跟踪一体化!4.39M参数、8.3W功耗,轻量化模型让无人机在露天矿实时巡检
算法·yolo·无人机·智能巡检·智慧矿山
玛卡巴卡ldf9 分钟前
【LeetCode 手撕算法】(矩阵)73-矩阵置零、54-螺旋矩阵(贪吃蛇)、48-旋转图像
java·数据结构·算法·leetcode·力扣
C^h9 分钟前
RTthread中的内存池理解
linux·数据库·c++·算法·嵌入式
深藏功yu名9 分钟前
Day25(高阶篇):RAG检索与重排序算法精研|从原理到参数调优,彻底攻克检索瓶颈
人工智能·算法·ai·自然语言处理·排序算法·agent
郝学胜-神的一滴14 分钟前
深入解析:生成器在UserList中的应用与Python可迭代对象实现原理
开发语言·python·程序人生·算法
雪木木14 分钟前
刷题:力扣热题100--滑动窗口(Day03)
算法·leetcode
Mr.wangh15 分钟前
redis面试题总结
java·redis·面试
lcj251116 分钟前
蓝桥杯C++:数据结构(功能导向速查)
数据结构·c++·蓝桥杯
Yzzz-F17 分钟前
Problem - 2157D - Codeforces
算法
颜酱20 分钟前
回溯算法实战练习(2)
javascript·后端·算法