【LeetCode】56. 区间合并

news2024/9/20 1:30:29

区间合并

题目描述:

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

思路分析:  

  1. 初始化合并后的区间列表:首先,创建一个空的列表 merged 来存储合并后的区间。这个列表将使用二维数组(或类似的数据结构,如 int[] 数组)来存储每个区间,其中每个区间由两个整数表示,分别代表区间的起始位置和结束位置。

  2. 遍历排序后的区间列表:由于合并操作需要基于区间的顺序进行,因此首先需要对输入的区间列表 intervals 进行排序。排序的依据通常是区间的起始位置。然后,遍历排序后的区间列表。

  3. 判断当前区间与合并后列表的关系

    • 无重叠:如果 merged 列表为空,或者当前区间的起始位置大于 merged 列表中最后一个区间的结束位置,说明当前区间与 merged 列表中的区间没有重叠。此时,直接将当前区间添加到 merged 列表中。
    • 有重叠:如果当前区间的起始位置小于或等于 merged 列表中最后一个区间的结束位置,说明当前区间与 merged 列表中的最后一个区间有重叠。此时,更新 merged 列表中最后一个区间的结束位置为当前区间结束位置和最后一个区间结束位置中的较大值,以实现合并。
  4. 返回合并后的区间列表:遍历完成后,merged 列表中存储的就是所有合并后的区间。由于题目要求返回二维数组,因此需要将 merged 列表转换为二维数组并返回。这可以通过调用 toArray 方法并传入一个正确类型的数组(这里是 new int[merged.size()][])来实现。

这种解题思路的关键在于通过遍历和比较,逐步构建出合并后的区间列表。排序步骤确保了遍历过程中可以方便地判断区间之间的重叠关系,而动态更新 merged 列表中的区间则实现了合并操作。

代码实现注解:

class Solution {
    public int[][] merge(int[][] intervals) {
        if(intervals.length == 0){
            //如果输入的区间列表为空,则直接返回一个空的二维数组  
            return new int[0][2];
        }
        // 按照区间的起始位置进行排序,如果起始位置相同,则默认保持原顺序
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
        // 用于存储合并后的区间列表  
        List<int[]> merged = new ArrayList<int[]>();  
        // 遍历排序后的区间列表  
        for (int i = 0; i < intervals.length; ++i) {  
            int L = intervals[i][0]; // 当前区间的起始位置  
            int R = intervals[i][1]; // 当前区间的结束位置  
            // 如果合并后的列表为空,或者当前区间的起始位置大于合并后列表中最后一个区间的结束位置  
            // 则说明当前区间与合并后的列表中的区间不重叠,直接将当前区间添加到合并后的列表中  
            if (merged.size() == 0 || merged.get(merged.size() - 1)[1] < L) {  
                merged.add(new int[]{L, R});  
            } 
            else {  
                // 否则,当前区间与合并后列表中的最后一个区间重叠,更新最后一个区间的结束位置为两者中的较大值  
                merged.get(merged.size() - 1)[1] = Math.max(merged.get(merged.size() - 1)[1], R);  
            }  
        }  
        // 将合并后的列表转换为二维数组并返回  
        return merged.toArray(new int[merged.size()][]);  
    }  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle的一些脚本工具总结

一、操作系统性能 在linux 6 之后&#xff0c;建议使用dstat监控操作系统的各项指标。 使用方法&#xff1a; yum install dstat dstat -cdlrgmnpsy 二、we.sql https://download.csdn.net/download/zengxiangbo/89601165 详见文章关联附件。 Oracle脚本工具&#xff0c;查…

企业安全生产管理是否将成为新的朝阳产业?

这个答案我可以肯定的告诉你&#xff0c;是的&#xff01; 首先朝阳产业是啥&#xff1f;朝阳产业指的是具有广阔发展前景、高成长性和创新性的产业。 但你也有可能不信我说的这句。因为在大多数人看来&#xff0c;安全生产管理这块儿&#xff0c;企业的关注度不多&#xff0…

Oracle Database 确认表空间大小的方法

Oracle Database 确认表空间大小的方法 sql: WITH object_size AS (SELECT segment_name,owner,segment_type,tablespace_name,SUM(bytes) total_bytesFROM dba_segmentsGROUP BY segment_name, owner, segment_type, tablespace_name ), table_size AS (SELECT segment_name …

【探索Linux】P.43(网络层 —— IP协议)

阅读导航 引言一、IP协议基本概念二、IP协议头格式三、网段划分1. 网络号和主机号2. 引入子网掩码&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;默认子网掩码&#xff08;3&#xff09;子网掩码的作用&#xff08;4&#xff09;子网掩码与IP地址的结合&#xff…

探索Python代码质量的守护神:Flake8

文章目录 探索Python代码质量的守护神&#xff1a;Flake8背景&#xff1a;为何选择Flake8&#xff1f;简介&#xff1a;Flake8是什么&#xff1f;安装&#xff1a;如何获取Flake8&#xff1f;使用方法&#xff1a;Flake8的基本命令场景应用&#xff1a;Flake8在实际开发中的作用…

SOMEIPSRV_RPC_13: 不同服务可以共享相同的端口

测试目的&#xff1a; 验证不同的服务是否能够共享同一个传输层协议的端口号。 描述 本测试用例旨在验证在同一个电子控制单元(ECU)上&#xff0c;不同服务的多个服务实例是否能够监听不同的端口&#xff0c;同时确保不同的服务能够共享同一个端口号。 测试拓扑&#xff1a…

接口测试:使用 curl 发送请求

简介 cURL 是一个通过 URL 传输数据的&#xff0c;功能强大的命令行工具。cURL 可以与 Chrome Devtool 工具配合使用&#xff0c;把浏览器发送的真实请求还原出来&#xff0c;附带认证信息&#xff0c;脱离浏览器执行&#xff0c;方便开发者重放请求、修改参数调试&#xff0c;…

SAP HCM 薪酬过账-忽略成本分配的含义

导读 INTRODUCTION 忽略成本分配&#xff1a;昨天分析C0表与C1表的作用&#xff0c;是为今天说的忽略成本分配按钮的铺垫&#xff0c;忽略成本分配这个翻译有点难让人理解&#xff0c;从字母意思感觉就是所有成本类的不拆分处相关的行项目&#xff0c;但是实际不是这样&#xf…

大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

ALB快速实现IPv4服务的负载均衡

阿里云应用型负载均衡ALB支持HTTP、HTTPS和QUIC协议&#xff0c;专门面向网络应用层&#xff0c;提供强大的业务处理能力。 为了实现IPv4服务的负载均衡&#xff0c;需要快速创建一个ALB实例&#xff0c;并将来自客户端的访问请求转发至后端服务器。 操作流程 第一步&#x…

多语言 AI 翻译 API 数据接口

AI / 翻译 基于 AI 多语言模型 支持多语言 / 基于模型。 1. 产品功能 基于自有专业模型进行 AI 多语言翻译高效的文本翻译性能全接口支持 HTTPS&#xff08;TLS v1.0 / v1.1 / v1.2 / v1.3&#xff09;&#xff1b;全面兼容 Apple ATS&#xff1b;全国多节点 CDN 部署&#xf…

ITSS服务经理/ITSS服务工程师,招投标需要准备吗?

信息技术服务标准&#xff08;ITSS&#xff09;是中国首套完整的信息技术服务标准体系&#xff0c;全面规定了IT服务产品及其组成要素的标准化实施&#xff0c;旨在提供可信赖的IT服务。 在国际竞争日益激烈的背景下&#xff0c;推动国内标准的国际化已成为广泛共识&#xff0…

excel如何绘制多列数据的折线图

1.注意表中的数据必须是数据类型的&#xff0c;不能是字符串格式的。如果是用python生成的&#xff0c;需要填充int或者float型的数据。 2.选择数据&#xff08;多列数据的选择&#xff0c;可以按住ctrl键后选中多列&#xff09; 2. 选择插入 3.选择 推荐的图表->所有图表…

JumpingKnowledge

文章目录 JumpingKnowledge思想&#xff1a; 举例 贯彻费曼学习法&#xff0c;用最简单的语句阐述复杂的理论 PYG JumpingKnowledge JumpingKnowledge GNN里也有JK了吗 思想&#xff1a; 非常简单。 假设有3层GNN&#xff0c;将经过GNN的每一层都保存下来&#xff0c;即中间…

Mybatis批量更新数据库错误

问题&#xff1a;记录一次使用Mybatis批量更新数据库的错误&#xff0c;错误信息&#xff0c;Error updating database. Cause: org.postgresql.util.PSQLException: 错误: 字段 "update_time" 的类型为 timestamp without time zone, 但表达式的类型为 text 建议&am…

你了解渗透测试吗?渗透测试在网络安全行业属于食物链什么层级?

可能大家对于行业存在食物链这一说法&#xff0c;印象最深的往往是编制行业&#xff0c;所谓的等级主义在那里确实更为明显。但实际上&#xff0c;各行各业都或多或少存在这种层级结构&#xff0c;网络安全领域也不例外&#xff0c;毕竟都是一些所谓的“人情世故”。那么就网络…

使用Qt3D绘制机械手场景

文章目录 1.前言2.效果3.实现过程3.1.场景代码3.2.自定义模型的渲染3.3.绘制直线或者网格 4.有待解决的一些问题4.1.线宽的设置、背面消隐&#xff08;culling&#xff09;的设置4.2.法线的问题 1.前言 之前是使用Coin3D来绘制机械手场景的【Qt利用Coin3D&#xff08;OpenInve…

15.1 Zookeeper简介安装及基础使用

1. Zookeeper介绍 1.1 介绍 1.2 应用场景简介 1.3 zookeeper工作原理 1.4 zookeeper特点

低代码平台下的用户中心开发:构建高效系统的新趋势

前言 随着数字化转型的深入&#xff0c;低代码开发平台因其快速、灵活的特性越来越受到企业的青睐。用户中心作为用户管理和服务的核心模块&#xff0c;对提升用户体验和增强用户粘性具有重要作用。本文将探讨如何利用低代码平台高效地构建用户中心&#xff0c;满足快速变化的…

英伟达开始引领下一波浪潮:物理AI

这可能会是AI技术形态的一个转折点,大模型的下一个形态&#xff0c;不再是人和模型一轮一轮的即时问答了。 当地时间 7 月 29 日&#xff0c;在美国丹佛举行的第 51 届 SIGGRAPH 计算机图形学会议上&#xff0c;英伟达创始人、CEO 黄仁勋与 Meta 创始人、CEO 马克・扎克伯格进…