当前位置: 首页 > article >正文

力扣56. 合并区间

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


示例 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 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 104

代码:

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        if(intervals.size() == 0){
            return {};
        }

        int i, l = 0, r = 0;
        vector<vector<int>> res;

        sort(intervals.begin(), intervals.end());

        for(i = 0; i < intervals.size(); i++){
            l = intervals[i][0], r = intervals[i][1];
            if(!res.size() || res.back()[1] < l){
                res.push_back({l, r});
            }
            else{
                res.back()[1] = max(res.back()[1], r);
            }
        }

        return res;
    }
};

解题思路:

(1)首先,按照区间左端点进行排序

(2)接着,遍历排序好的区间

(3)随后,不断更新 l 和 r,若结果中的最后一个区间的右端点小于当前左端点,说明出现间断。更新结果

(4)若若结果中的最后一个区间的右端点大于当前左端点,说明区间连续,更新结果


http://www.kler.cn/a/503282.html

相关文章:

  • 图像模糊度(清晰度)检测 EsFFT 算法详细分析
  • 机器学习(1):线性回归概念
  • 东芝3525AC彩色复印机复印默认成黑白模式方法
  • 【算法】将单链表按值划分
  • ubuntu20.04 安装RTX2060驱动
  • Vue学习二——创建登录页面
  • API接口技术开发小红书笔记详情api采集笔记图片视频参数解析
  • 【STM32】HAL库USB实现软件升级DFU的功能操作及配置
  • 开发人员学习书籍推荐(C#、Python方向)
  • IDEA编译器集成Maven环境以及项目的创建(2)
  • centos修改/etc/resolv.conf 重启network后又恢复到原来的状态
  • 微服务之松耦合
  • 微信小程序:实现首页权限菜单效果
  • Java-数据结构-栈与队列(常考面试题与单调栈)
  • 自动化办公|xlwings简介
  • 在移动端开发图表,uniapp+echarts,需要特殊处理,使用renderjs
  • 思科 Java 开发人员面试记录 2024(Java、Spring-Boot、Hibernate)
  • Kali之环境变量技巧(Kali‘s Environmental Variable Skills)
  • docker 与K8s的恩怨情仇
  • 【Vue】mouted、created、computed区别
  • HTTP详解——HTTP基础
  • Python爬虫:结合requests和Cheerio处理网页内容
  • MyBatis实现数据库的CRUD
  • python学opencv|读取图像(三十四)阈值处理-彩色图像
  • 机器学习头歌(第三部分-强化学习)
  • 【IO编程】深度优先遍历