一、题目介绍

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

二、算法思想

为了方便遍历以及比较,于是对整个二维数组中的左边元素进行排序,如下图所示。


我们用path的List集合作为一个中间站,用来暂时存储合并后的数组或者不用合并的数组。

按照升序排序之后,我们就开始遍历,如果第二个数组的左端点元素小于等于第一个数组的右端点元素,那么说明两个数组的元素有交叉,于是就将这两个数组的右端点设置为第一个数组和第二个数组中右端点最大的那个值,然后将合并后的数组加入list集合中。否则就将不用合并的数组加入到path中,之后再接着向后遍历。

三、代码实现

class Solution {public int[][] merge(int[][] intervals) {//此处需要注意,这里是重写了compare方法,用来告诉sort函数是按照升序还是降序来进行排序。Arrays.sort(intervals,new Comparator<>(){public int compare(int a[],int b[]){return a[0]-b[0];}});List<int[]> path=new ArrayList<>();int i=0;while(i<intervals.length){int leftBound=intervals[i][0];int rightBound=intervals[i][1];while(i<intervals.length-1 && intervals[i+1][0]<=rightBound){i++;rightBound=Math.max(intervals[i][1],rightBound);}path.add(new int[]{leftBound,rightBound});i++;}return path.toArray(new int[0][]);}
}

2.合并区间(LeetCode第56题)相关推荐

  1. 贪心算法——合并区间(Leetcode 56)

    题目选自Leetcode56 思路 大家应该都感觉到了,此题一定要排序,那么按照左边界排序,还是右边界排序呢? 都可以!排序之后就是贪心思想了~~ 题目 给出一个区间的集合,请合并所有重叠的区间. 示 ...

  2. LeetCode部分刷题笔记!!!JavaScript!!!

    详细解说请看视频JS老毕:人人都能看得懂的Leetcode力扣刷题教程合集 边看视频边记录笔记!!!部分题目在视频中无! 文章目录 LeetCode第1题:1. 两数之和 LeetCode第2题:2. ...

  3. 《LeetCode力扣练习》第56题 合并区间 Java

    <LeetCode力扣练习>第56题 合并区间 Java 一.资源 题目: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, ...

  4. LeetCode 55跳跃游戏56合并区间57插入区间

    原创公众号:bigsai 希望和优秀的你做朋友,感觉不错还请一键三连. 回复进群即可加入和200+人一起打卡.上周打卡: LeetCode 47全排列Ⅱ&48旋转图像 LeetCode 49字 ...

  5. [Leedcode][JAVA][第56题][合并区间][数组][贪心算法]

    [问题描述]56.合并区间 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18] ...

  6. leetcode 56. 合并区间

    leetcode 56. 合并区间 题目描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合并所有重叠的区间, ...

  7. LeetCode 56 合并区间

    56. 合并区间 难度中等1153收藏分享切换为英文接收动态反馈 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合 ...

  8. c语言贪心算法合并箭,LeetCode刷题题库:贪心算法

    LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

  9. LeetCode 57. 插入区间(合并区间+排序)(区间重叠问题汇总)

    题目描述 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: interval ...

最新文章

  1. 【机器视觉案例】(8) AI视觉,手势控制电脑鼠标,附python完整代码
  2. 蚂蚁金服AAAI论文:基于长短期老师的样本蒸馏方法和自动车险定损系统的最新突破...
  3. vc++中几个常用的数学函数
  4. Apache+MySQL+PHP安装指南
  5. pytorch中的切片时的省略号
  6. 三十一、Vue框架赶紧来了解一下
  7. python中关于深拷贝和浅拷贝的详解
  8. 洛谷 1057——台阶问题(递推与递归二分)
  9. 把Vim改装成一个IDE编程环境
  10. Julia: 通过简单实践理解机器学习概念(flux.jl)
  11. ofo这事吧,其实也挺好的
  12. python代码模板
  13. 计算机基础应用课件,计算机应用基础教程(全套课件).ppt
  14. VUE之倒计时插件(超实用)
  15. 基于Python的招聘网站招聘信息分析
  16. 网易邮箱阻止一次非法访问解除方法
  17. java修饰词严格程度_Java修饰词的总结
  18. Type-C PD充电
  19. C#Mysql学生信息管理系统
  20. 单引号,双引号,三引号的区别

热门文章

  1. ubuntu php xml模块,生成ubuntu自动切换壁纸xml文件的php代码
  2. 安装ssd后不识别网卡_缓冲床安装后不耐磨 缓冲条应该如何选择
  3. Nat. Biotechnol.| 基于生物活性建模识别抗SARS-CoV-2药物
  4. 代码居中对齐_一篇文章带你了解CSS对齐方式
  5. 如何同步更新 Github 上 Fork 的项目?
  6. 澳门大学燕茹教授课题组招聘/招生启事
  7. 最后两天-微生物组-宏基因组分析(线上/线下同时开课,2020最后一期)
  8. ​纳米孔测序揭示冻土冻融对土壤微生物群落变化的影响
  9. EggNOG功能注释数据库在线和本地使用
  10. Nature综述:Rob Knight带你分析微生物组数据(2020版)