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

[Java恶补day14] 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 <= 10 4 10^4 104
intervals[i].length == 2
0 <= starti <= endi <= 10 4 10^4 104


知识点:
数组、排序


解:
因为需要合并若干个区间,因此对左端点进行升序排序,使用到lambda表达式

对于每个区间,左端点表示这个区间的起始下标,右端点表示这个区间的结束下标

定义一个列表,存储结果,列表的每个元素都是一个int类型的一维数组。

对于intervals的每个元素(即:每一行),按照以下步骤进行:
①获取当前结果列表res的大小
②若当前结果列表res没有元素,表示我们直接原始数组的第一行加入这个结果列表res
③若当前结果列表res有元素,且最后一个元素的右端点≥当前遍历的元素的左端点,如:[1, 3]与[2, 5],表明需要合并区间。因为这个区间已经在结果列表res中,我们做的就是替换这个区间在res的相应左端点:获取更大的结束下标。对于这个例子而言,最大的结束下标是5,也就是p[1],因此让结果列表res中的最后一个元素的右端点更新为这个5。若[1, 4]与[2, 3],则最大的结束下标是4,也就是res.get(len-1)[1],因此结果列表res中的最后一个元素的右端点更新为这个4。
④若当前结果列表res有元素,但最后一个元素的右端点<当前遍历的元素的左端点,则表明无法与当前正在处理的结果列表中的最后一个区间进行合并,那就往res新增一个元素。

最后,我们将List列表,通过.toArray()转为数组,返回。

时间复杂度: O ( n l o g n ) O(nlog n) O(nlogn)Arrays.sort()平均耗时 O ( n l o g n ) O(nlog n) O(nlogn)
空间复杂度: O ( 1 ) O(1) O(1)。排序的栈开销和返回值不计入

class Solution {public int[][] merge(int[][] intervals) {List<int[]> res = new ArrayList<>(); //最后一个元素表示正在合并的区间//原始数据按第一列进行排序Arrays.sort(intervals, (o1, o2) -> (o1[0] - o2[0]));//遍历每一行for (int[] p : intervals) {//获取当前结果列表的大小int len = res.size();//若结果列表有元素,且可合并if (len > 0 && res.get(len - 1)[1] >= p[0]) {//更新右端点最大值res.get(len - 1)[1] = Math.max(res.get(len - 1)[1], p[1]);}//无法合并else {//添加新的合并区间res.add(p);}}//列表转数组并返回return res.toArray(new int[res.size()][]);}
}

参考:
1、灵神解析
2、java二维数组排序

相关文章:

  • 悟饭游戏厅苹果版(悟饭掌悦)|iOS游戏社区手柄工具
  • 【25.06】fabric进行caliper测试加环境部署
  • Vue-ref 与 props
  • browser-use Agent 日志链路分析
  • 1.1Nodejs和浏览器中的二进制处理
  • linux常用特殊字符
  • vue路由的使用与鉴权
  • 健康管理软件+AI技术:打造健康管理方案
  • CppCon 2014 学习:Return values take a ”closure” walk
  • 安全-JAVA开发-第一天
  • 哪些IT运维工具支持自定义监控项?
  • 网络编程(计算机网络基础)
  • 力扣刷题Day 69:搜索二维矩阵(74)
  • LeetCode刷题 -- 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现
  • WebFuture 系列产品 15.2.4 发布公告
  • 黑马Java面试笔记之 消息中间件篇(Kafka)
  • 【动手学机器学习】第三章模式识别与机器学习经典算法——k 近邻算法
  • 2025年AIR SCI1区TOP,多策略增强蜣螂算法MDBO+实际工程问题,深度解析+性能实测
  • 谷歌地图高清卫星地图2026中文版下载|谷歌地图3D卫星高清版 V7.3.6.9796 最新免费版下载 - 前端工具导航
  • 让AI弹琴作曲不再是梦:Python+深度学习玩转自动化音乐创作
  • 只做网站不做app/湖南企业竞价优化公司
  • 商务网站的建设步骤/西安百度网站排名优化
  • PHP开源网站开发系统/百度拍照搜索
  • 自己怎样免费建设网站/seo对网店推广的作用有哪些
  • 常州网站制作企业/中国站长网站
  • 成都网站建设公司招聘/搜索网站排名