合并区间
 
 

给出一个区间的集合,请合并所有重叠的区间。

示例 1:

  1. 输入: [[1,3],[2,6],[8,10],[15,18]]
  2. 输出: [[1,6],[8,10],[15,18]]
  3. 解释: 区间 [1,3] [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

  1. 输入: [[1,4],[4,5]]
  2. 输出: [[1,5]]
  3. 解释: 区间 [1,4] [4,5] 可被视为重叠区间。

思路:我们采用非常直观的思维,观察各个区间,既然要对区间排列,首先对区间排序,使其按照左端点的大小进行排列。这里要用到数据结构的Collections.sort来进行排序。

  需要了解Collections.sort( list ,new Comparator<  >()  );的排序写法。  注意这里很容易出错。

  排序完之后,进行区间的划分。 首先将第一个区间作为比较区间temp

遍历整个List。 存在以下情况:1.如果temp的左端点和遍历区间的左端点不相交,当前temp加入数组,更新temp。

              2.如果相交,那么当前区间的右端点小于遍历数组的右端点,更新temp的右端点。

              因为区间按照左端点排序,不需要再处理左端点。

              3.相交之下,如果当前区间右端点包含遍历区间,什么也不用做。

              遍历完之后,把temp加入list。

  1. /**
  2. * Definition for an interval.
  3. * public class Interval {
  4. * int start;
  5. * int end;
  6. * Interval() { start = 0; end = 0; }
  7. * Interval(int s, int e) { start = s; end = e; }
  8. * }
  9. */
  10. class Solution {List<Interval> list=new ArrayList();
  11. public List<Interval> merge(List<Interval> intervals) {
  12. if(intervals.size()==0)return list; //list为空的情况,直接判出。
  13. //Collections.sort()的具体用法。 比较对象是Interval这个类。最后将表按照左端点的顺序排列
  14. Collections.sort(intervals,new Comparator<Interval>(){
  15. public int compare(Interval a,Interval b){
  16. return a.start-(b.start);
  17. }
  18. });
  19. Interval temp=intervals.get(0);
  20. for(Interval aa:intervals){ //遍历表,判断3种条件。
  21. if(temp.end<aa.start){
  22. list.add(temp);
  23. temp=aa;
  24. }else {
  25. if(temp.end>=aa.end){
  26. temp=temp;
  27. }else{
  28. temp.start=temp.start;
  29. temp.end=aa.end;
  30. }
  31. }
  32.  
  33. }
  34. list.add(temp);
  35. return list;
  36. }
  37.  
  38. }

leetcode合并区间的更多相关文章

  1. leetcode 合并区间

    使用最简单的排序方法: /** * Definition for an interval. * public class Interval { * int start; * int end; * In ...

  2. [LeetCode] Merge Intervals 合并区间

    Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...

  3. 【LeetCode】数组--合并区间(56)

    写在前面   老粉丝可能知道现阶段的LeetCode刷题将按照某一个特定的专题进行,之前的[贪心算法]已经结束,虽然只有三个题却包含了简单,中等,困难这三个维度,今天介绍的是第二个专题[数组] 数组( ...

  4. LeetCode(56):合并区间

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

  5. LeetCode 56. 合并区间(Merge Intervals)

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

  6. Java实现 LeetCode 56 合并区间

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

  7. 力扣leetcode 56. 合并区间

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

  8. leetcode刷题-56合并区间

    题目 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]] 思路 通过设置一个移 ...

  9. lintcode:合并区间

    题目: 合并区间 给出若干闭合区间,合并所有重叠的部分. 样例 给出的区间列表 => 合并后的区间列表: [ [ [1, 3], [1, 6], [2, 6], => [8, 10], [ ...

随机推荐

  1. Gradle Goodness: Unpacking an Archive

    To create an archive with Gradle is easy. We have several tasks like Zip, Tar, Jar, War and Ear to c ...

  2. java 时间日期

    Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Date ...

  3. 阿里云云服务器Windows Server 2012 R2无法安装IIS等组件的解决办法

    Windows Server2012 R2数据中心版 不管安装什么组件,都显示存储空间不足,无法应用命令,错误代码0x80070008. 最终确认是服务器配置过低的原因,因为这个型号是低级别的配置,1 ...

  4. 搭建python开发平台

    转:http://www.cnblogs.com/xuqiang/archive/2011/04/18/2019484.html <1>. 建立Python的开发环境; 这里使用的Pyth ...

  5. Java中,如何跳出当前的多重嵌套循环

    在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环.(Java中支持带标签的break和continue语句)

  6. 第三天-零基础学习python

    1.回忆.列表方法,append(),extend(),insert() 2.列表获取元素: >>> member = ['HU','YU','HUYAN','HUJIAMU']   ...

  7. 竞赛题解 - Karp-de-Chant Number(BZOJ-4922)

    Karp-de-Chant Number(BZOJ-4922) - 竞赛题解 进行了一次DP的练习,选几道题写一下博客~ 标签:BZOJ / 01背包 / 贪心 『题目』 >> There ...

  8. bootstrap-01-学习记录

    1.bootstrap所有插件依赖JQ,必须在JQ之后引入. 2.bootstrap分预编译版(css,js,fonts)和源码版(less,js,fonts,dist->预编译版内容,docs ...

  9. nginx php-fpm 高并发优化

    PHP-php-fpm配置优化 前言: 1.少安装PHP模块, 费内存 2.调高linux内核打开文件数量,可以使用这些命令(必须是root帐号)(我是修改/etc/rc.local,加入ulimit ...

  10. 通过samba服务将centos7指定文件挂载到window下

    做嵌入式开发,windows下编辑代码,虚拟机上编译,为了方便打算在虚拟机下搭一个samba服务器,将文件夹映射到windows下,搜索网上的方法,内容大同小异,试了半天终于成功了.特此记录一下步骤, ...