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

Leetcode56_合并区间

1.leetcode原题链接:. - 力扣(LeetCode)

2.题目描述

以数组 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] 可被视为重叠区间。

3.实现方法

1.将所有区间按照左边界排序

2.定义一个结果List,遍历排序后的区间

2.1 如果结果List没数据 或者 当前数组的左边界比结果List最后一个区间的右边界大,不能合并,直接添加到结果数组

2.2 否则可以合并,合并后的右边界取当前结果LIst最后一个区间的右边界和当前区间的右边界的最大值。

注意:排序后不会出现三个相邻区间,第一个和第三个能合并,第一个和第二个 或 第二个和第三个不能合并的情况,所有能够合并的区间都必然是连续的。

class Solution {public int[][] merge(int[][] intervals) {// 定义一个结果数组List<int[]> list =new ArrayList<>();//1.将所有区间按照左边界排序Arrays.sort(intervals,new Comparator<int[]>(){public int compare(int[] o1,int[] o2){return o1[0] -o2[0];}});//2. 遍历排序后的区间,逐个合并for(int[] interval : intervals){//记录当前的左右边界int left=interval[0];int right=interval[1];//获取结果数组的长度int length=list.size();//如果结果数组没数据 或者 left比最后一个区间的右边界大,不能合并,直接添加到结果数组if(length==0 || left>list.get(length-1)[1]){list.add(interval);}else{//可以合并int mergedLeft=list.get(length-1)[0];int mergedRight=Math.max(list.get(length-1)[1],right);//注意:合并只是更新(set),而不是添加(add)list.set(length-1,new int[]{mergedLeft,mergedRight});}}return list.toArray(new int[list.size()][]);}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 21. 面试指导-高频面试题详解
  • 一次部署,多处运行:Docker容器化开发
  • Java 处理Mysql获取树形的数据
  • SpringBoot多级多模块聚合项目下maven打包报‘packaging‘ with value ‘jar‘ is invalid.
  • 图书馆自助借书机怎么借书
  • Bash相关
  • Mysql安装(命令方式安装)
  • 基于深度学习的电动自行车头盔佩戴检测系统
  • 06-User Login
  • 一文搞懂从爬楼梯到最小花费(力扣70,746)
  • 语义分割交互式智能标注工具 | 澳鹏数据标注平台
  • LangChain - OpenGPTs
  • GO - 泛型编程
  • 深入浅出 -- 系统架构之负载均衡Nginx实现高可用
  • 面试算法-148-轮转数组
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【5+】跨webview多页面 触发事件(二)
  • 【mysql】环境安装、服务启动、密码设置
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • IDEA常用插件整理
  • Java比较器对数组,集合排序
  • js中的正则表达式入门
  • mysql 5.6 原生Online DDL解析
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Vue全家桶实现一个Web App
  • Vultr 教程目录
  • 从零开始的无人驾驶 1
  • 回流、重绘及其优化
  • 坑!为什么View.startAnimation不起作用?
  • 使用putty远程连接linux
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 学习Vue.js的五个小例子
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • linux 淘宝开源监控工具tsar
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 如何在招聘中考核.NET架构师
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #数据结构 笔记一
  • (145)光线追踪距离场柔和阴影
  • (C)一些题4
  • (ibm)Java 语言的 XPath API
  • (安卓)跳转应用市场APP详情页的方式
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (南京观海微电子)——I3C协议介绍
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)创业的注意事项