​LeetCode解法汇总56. 合并区间

news/2024/7/5 3:13:16

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


描述:

以数组 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

解题思路:

* 解题思路:

* 首先按照intervals[i].left的大小排序,然后选出第一个为header,header和后面的一一比较,分为三种情况:

* 1.header.right<interval.left;此时说明两个区间不相交,则把header加入out中,并且更新interval为header;

* 2.header.right>=interval.right;此时说明header完全覆盖interval,则可以直接跳过;

* 3.header.right<interval.right;此时说明两个区间有相交则相互不能完全覆盖,则更新header的right,等于区间合并。

代码:

class Solution56
{
public:
    vector<vector<int>> merge(vector<vector<int>> intervals)
    {
        sort(intervals.begin(), intervals.end(), [](vector<int> v1, vector<int> v2)
             { return v1[0] - v2[0] < 0; });
        vector<vector<int>> out;
        vector<int> header;
        for (vector<int> interval : intervals)
        {
            if (header.size() == 0)
            {
                header = interval;
                continue;
            }
            if ((header)[1] < interval[0])
            {
                out.push_back(header);
                header = interval;
                continue;
            }
            if ((header)[1] >= interval[1])
            {
                continue;
            }
            header[1] = interval[1];
        }
        out.push_back(header);
        return out;
    }
};


http://lihuaxi.xjx100.cn/news/1500247.html

相关文章

VB高校缴费系统设计与实现

摘 要 本论文是对针对日益复杂化的高校收费工作而设计开发的高校缴费系统的说明,主要介绍了系统开发的主要过程和方法,并且给出了基本的关系模型,完成了模型的静态分析与动态分析。 缴费管理系统是个典型的信息管理系统(MIS)。其设计开发主要包括了后台数据库设计建立和维…

DolphinDB 加入 NVIDIA 初创加速计划

近日&#xff0c;DolphinDB 正式加入“NVIDIA 初创加速计划&#xff08;NVIDIA Inception&#xff09;”&#xff0c;该项目是 NVIDIA 提供的一个加速创业公司发展的全球生态项目&#xff0c;为免费会员制&#xff0c;旨在培养颠覆行业格局的优秀创业公司。 DolphinDB 专注于为…

虚拟企业的业务过程运行平台和知识管理网络的一体化构建

1 构建虚拟企业的业务过程运行平台的基础网络 虚拟企业的经营过程是建立在运行平台之上的&#xff0c;而支持虚拟企业运行平台的基 础网络是:知识技能网络、信息网络、物流网络、契约网络(动态合同网络)。 (1)知识技能网络。它包括各个成员企业产生的可以共享的知识技能&…

数据通信——DHCP中继

一&#xff0c;实验背景 之前不是用DHCP来分配IP地址么&#xff01;现在该公司在核心交换机旁挂了一个专用的 DHCP Server 来为终端分配IP地址&#xff0c;那么现在你就要改下配置了&#xff0c;用DHCP中继完成IP分配。 中继的好处就是&#xff0c;我们仅需在中继上配好DHCP所需…

如何为新产品做好全网口碑推广?

互联网时代下&#xff0c;产品上市后的口碑营销直接关系到产品的销售量。不管是网购还是线下购物&#xff0c;消费者喜欢通过互联网去查询产品的网络口碑&#xff0c;如果产品评价不好可能不断丢失客户。新产品推出之后做好全网口碑推广&#xff0c;为新品的销售做好铺垫已经成…

go中runtime包里面的mutex是什么?runtime.mutex解析

其实在看go源码的时候&#xff0c;发现除了sync包里有个mutex以外&#xff0c;runtime包里也有一个mutex&#xff0c;这个mutex在runtime很多地方都在用。 这个runtime包里面的mutex的结构如下&#xff1a; 目录: /runtime/runtime2.go 代码&#xff1a; type mutex struct …

CA证书颁发机构服务器

目录 一、CA证书颁发机构是什么&#xff1f; 二、数字证书可以干什么&#xff1f; 三、PKI&#xff1a;即公钥加密体系&#xff08;public key cryptography&#xff09; 四、CA在网络中的工作流程及原理&#xff08;以网站为例&#xff09; 五、HTTPS 的工作原理 六、CA私有证…

Python编程——深入了解不可变的元组

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;Python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 目录 一、元组是什么 二、元组的定义 1、相同类型组成元组…