数组-区间合并

一、题目描述

二、题目思路

这里提供满足基本要求的解题思路:

1.先对列表内按照start大小升序排序,这里创建Comparator接口的实现类,重写compare方法。

2.遍历intervals,设置laststart、lastend两个变量与当前区间相比较,合并公共空间,注意存在区间A包含区间B的情况。

3.在遍历完成后,还要注意把 [laststart,lastend] 区间加到返回列表中。

三、代码实现
import java.util.*;
/** public class Interval {*   int start;*   int end;*   public Interval(int start, int end) {*     this.start = start;*     this.end = end;*   }* }*/class CompareImpl implements Comparator<Interval> {//重写比较方法,按照Interval.start排序,如果相等按照end排序@Overridepublic int compare(Interval inter1, Interval inter2) {if (inter1.start < inter2.start) {return -1;} else if (inter1.start == inter2.start) {if (inter1.end <= inter2.end) {return -1;} else {return 1;}} else {return 1;}}}public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param intervals Interval类ArrayList* @return Interval类ArrayList*/public ArrayList<Interval> merge (ArrayList<Interval> intervals) {// write code hereif (intervals.size() <= 1) {return intervals;}//首先对intervals进行排序intervals.sort(new CompareImpl());//遍历intervals,合并公共空间ArrayList<Interval> resarr = new ArrayList<>(0);Iterator<Interval> intiv = intervals.iterator();int laststart = -1, lastend = -1;while (intiv.hasNext()) {Interval nowinterval = intiv.next();if (laststart == -1) { //当前集合不需要合并操作时laststart = nowinterval.start;lastend = nowinterval.end;} else {if (lastend >= nowinterval.start) {//这里合并时,除了 [[1,2],[2,3]] 还要注意测试用例 [[1,4],[2,3]] 的情况lastend=lastend<nowinterval.end?nowinterval.end:lastend;} else {Interval newinterval = new Interval(laststart, lastend);resarr.add(newinterval);//更新laststart和lastendlaststart=nowinterval.start;lastend=nowinterval.end;}}}//最后还需要把laststart和lastend区间加入到resarr中Interval newinterval = new Interval(laststart, lastend);resarr.add(newinterval);return resarr;}
}
四、刷题链接

合并区间_牛客题霸_牛客网

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

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

相关文章

Ansible实战YAML语言完成apache的部署,配置,启动全过程

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f3dd;️Ansible专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年5月24日15点59分 目录 &#x1f4af;趣站推荐&#x1f4af; &#x1f38a;前言 ✨️YAML语言回顾 &#x1f386;1.编写YAML文…

centos 安装nginx 并配置https ssl

进入你要安装的目录 一般是/usr/local/ wget https://nginx.org/download/nginx-1.24.0.tar.gz解压安装包&#xff1a;使用以下命令解压下载的Nginx安装包&#xff1a; tar -zxvf nginx-1.24.0.tar.gz在编译和安装Nginx之前&#xff0c;确保您的系统上已安装了必要的编译工具和…

flume channel和interceptor简介及官方用例

一、Flume Channels channel是在代理上暂存事件的存储库。Source 添加事件&#xff0c;Sink 将其删除。 1、Memory Channel 事件存储在具有可配置最大大小的内存中队列中。它非常适合需要更高吞吐量的流&#xff0c;但在agent发生故障时会丢失暂存数据 Property Name Defau…

k近邻和kd树

K近邻 选取k值的时候可以采用交叉验证的方法 一般采用欧氏距离 kd树 采用树这个特殊的数据结构来实现k近邻算法 先假设是二维的情况 下面讲解kd树的完整构造过程 找这个中位数是按照每棵子树来创建的 前提是已经有了一棵kd树,然后来一个实例点

java组合设计模式Composite Pattern

组合设计模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。 // Component - 图形接口 interface Graphic {void draw()…

Python UDP编程简单实例

TCP是建立可靠的连接&#xff0c;并且通信双方都可以以流的形式发送数据。 相对于TCP&#xff0c;UDP则是面向无连接的协议&#xff0c;不需要建立连接&#xff0c;只需要知道对方IP地址和端口号&#xff0c;就可以直接发送数据包。但是只管发送不保证到达。 虽然UDP传输数据…

Docker快速部署Seata的TC服务以及微服务引入Seata教程

目录 一、使用docker部署Seata的TC服务 1、拉取TC服务镜像 2、创建并运行容器 ​3、修改配置文件 4、在Nacos中添加TC服务的配置 5、重启TC服务 二、微服务集成Seata 1、引入依赖 2、修改配置文件 Seata是阿里的一个开源的分布式事务解决方案&#xff0c;能够为分布…

STM32学习和实践笔记(31):输入捕获实验

1.输入捕获介绍 在定时器中断实验章节中我们介绍了通用定时器具有多种功能&#xff0c;输入捕获就是其中一种。STM32F1除了基本定时器TIM6和TIM7&#xff0c;其他定时器都具有输入捕获功能。输入捕获可以对输入的信号的上升沿&#xff0c;下降沿或者双边沿进行捕获&#xff0c;…

【博客主页】博客主旨 精华

前言 与博客园不同, 最近CSDN在进行资本化的转型.其一部分的VIP代码和小册我也有相关消费, 个人认为是一部分做的比较成过, 另一部分又不是特别成功. 其CSDN博客已经失去其原本技术交流的意义, 变成一种免费的知识引流和收费交流. 这其实与我们的开源社区背道而驰, 但是又吸引…

世界电信日 | 紫光展锐以科技创新支撑数字经济可持续发展

专注科技创新&#xff0c;打造全球数字经济技术基石 紫光展锐坚持科技创新,为数字经济蓬勃发展提供基石力量。 面对5G-A技术的巨大潜力&#xff0c;紫光展锐与众多生态伙伴紧密合作&#xff0c;积极推动5G-A的商用进程。紫光展锐提出的两项R18 eRedCap演进方案已被3GPP标准采…

为什么要实现设备之间的互通?

设备之间的互通是电信设备的普遍性要求&#xff0c;特别是在接入网领域中&#xff0c;不同厂商的局端设备与用户端&#xff08;终端&#xff09;设备之间的互通显得尤其重要。 一、互通能为产业链的各个环节带宽积极影响。 &#xff08;1&#xff09;对用户而言&#xff0c;互…

安装新版的Ubuntu WSL以使能BBR拥塞控制算法

【多次尝试成功的方案】通过> wsl - -list -online列出可以安装的版本&#xff0c;用命令> wsl --install -d Ubuntu-24.04 安装。 【未成功的方案】通过挂在ubuntu24.04.iso到E盘后&#xff0c;用命令> wsl --import Ubuntu24.04 C:\WSL\Ubuntu24.04\ E:\ --versio…

Redis系统架构中各个处理模块是干什么的?no.19

Redis 系统架构 通过前面的学习&#xff0c;相信你已经掌握了 Redis 的原理、数据类型及访问协议等内容。本课时&#xff0c;我将进一步分析 Redis 的系统架构&#xff0c;重点讲解 Redis 系统架构的事件处理机制、数据管理、功能扩展、系统扩展等内容。 事件处理机制 Redis…

API-BigInteger、BigDecimal

BigInteger&#xff1a; demo1: package BigInteger;import java.math.BigInteger; import java.util.Random;public class demo1 {public static void main(String[] args) {//获取一个随机最大整数BigInteger bd1 new BigInteger(5, new Random());System.out.println(bd1…

SSMP整合案例第一步 制作分析模块创建与开发业务实体类

制作分析 我们要实现一个模块的增删改查 实际开发中mybatisplus用的不多&#xff0c;他只能对没有外键的单表进行简单的查询 但在这个案例中我们还是选择mybatisplus开发 模块创建 我们把所有服务器都放在一起 就不用前后端分离 我们尝试用后端开发进行全栈开发 新建项目添…

macos brew安装多版本protobuf,切换指定版本protobuf 为默认版本方法

protobuf 不同的版本语法相差很大&#xff0c; 而在不同的项目中可能使用的protobuf版本也不同&#xff0c;所以我们的电脑就可能需要安装多个版本的protobuf&#xff0c; 下面介绍macos下如何通过brew安装多版本和设置想要的默认版本的方法 安装&#xff0c;则可以先执行 bre…

Thinkphp3.2.3网站后台不能访问如何修复

我是使用Thinkphp3.2.3新搭建的PHP网站&#xff0c;但是网站前台可以访问&#xff0c;后台访问出现如图错误&#xff1a; 由于我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板&#xff0c;对于上述出现的问题不清楚如何处理&#xff0c;因此联系Hostease的…

(3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)

目录 一、磁共振快速采集技术基础 1.K空间的基本特点 2.快速成像的理由&#xff1a; 3.快速成像的硬件要求&#xff1a; 二、磁共振快速采集技术 1.采集更少的相位编码线 2.平行采集技术PAT 3.其他与快速采集有关的技术 1&#xff09;部分回波技术 2&#xff09;频率…

java实现一个动态监控系统,监控接口请求超时的趋势

目录 整体思路案例实现1. 数据收集2. 数据聚合3. 趋势分析4. 异常检测5. 异常处理定时任务 整体思路 理想情况下&#xff0c;你可以实现一个简单的动态监控算法来检测渠道请求的响应时间趋势&#xff0c;并在发现频繁超时的情况下进行处理。以下是一个可能的算法框架&#xff…

Oracle表关联更新几种方法

1、测试表及数据准备 create table T_update01(ID int ,infoname varchar2(32),sys_guid varchar2(36)); create table T_update02(ID int ,infoname varchar2(32),sys_guid varchar2(36));insert into T_update01 select 1,N1_updateName,sys_guid() from dual union select …