【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;
    }
};
相关推荐
Starry_hello world5 分钟前
C++ 线程 (3)
c++
Maỿbe19 分钟前
力扣hot图论部分
算法·leetcode·图论
雍凉明月夜22 分钟前
c++ 精学笔记记录Ⅲ
c++·笔记·学习
LYFlied27 分钟前
【每日算法】LeetCode 78. 子集
数据结构·算法·leetcode·面试·职场和发展
月明长歌32 分钟前
【码道初阶】【Leetcode606】二叉树转字符串:前序遍历 + 括号精简规则,一次递归搞定
java·数据结构·算法·leetcode·二叉树
子枫秋月32 分钟前
C++字符串操作与迭代器解析
数据结构·算法
鹿角片ljp33 分钟前
力扣234.回文链表-反转后半链表
算法·leetcode·链表
(●—●)橘子……34 分钟前
记力扣1471.数组中的k个最强值 练习理解
数据结构·python·学习·算法·leetcode
oioihoii36 分钟前
C++共享内存小白入门指南
java·c++·算法
布茹 ei ai38 分钟前
QtWeatherApp - 简单天气预报软件(C++ Qt6)(附源码)
开发语言·c++·qt·开源·开源项目·天气预报