题目要求:

Given a collection of intervals, merge all overlapping intervals.

For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].

解题思路:

1)将集合进行排序;

集合的排序建议使用Collections的sort方法实现,需要自己实现Comparator接口;

2)依次进行归并,当后者的start大于当前Interval的end时,将当前Interval加入到集合中,否则将当前Interval和后者Interval进行归并

注意:边界条件的判断

代码:

 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
11
12 public class Solution {
13     public List<Interval> merge(List<Interval> intervals) {
14         //处理特殊情况
15         if(intervals == null || intervals.size() <2 ){
16             return intervals;
17         }
18
19         //集合排序
20         ComparatorImpl com = new ComparatorImpl();
21         Collections.sort(intervals,com);
22
23         //归并
24         List<Interval> temp = new ArrayList<Interval>();
25         Interval val = intervals.get(0);
26         Interval next;
27         boolean flag = true;
28         for(int i=1; i<intervals.size();){
29             next = intervals.get(i);
30             flag = true;
31             if(next.start > val.end){
32                 temp.add(val);
33                 val = next;
34                 flag = false;
35             }else{
36                 //进行一次归并,i自增一次
37                 val.end = Math.max(val.end,next.end);
38                 i++;
39             }
40         }
41
42         //处理最后一个未归并的Interval
43         if(flag){
44             temp.add(val);
45         }
46
47         return temp;
48     }
49 }
50
51 //实现排序接口
52 class ComparatorImpl implements Comparator<Interval>
53 {
54     public int compare(Interval o1, Interval o2) {
55         // TODO Auto-generated method stub
56         return o1.start-o2.start;
57     }
58
59 }

转载于:https://www.cnblogs.com/bywallance/p/5757242.html

leetcode56. Merge Intervals相关推荐

  1. [LeetCode]Merge Intervals

    题目:Merge Intervals 给定n个区间合并重合区间 思路: 先按照区间起点排序,然后合并下面情况: 1.起点相同,以最大的终点为新的终点: 2.前一个终点大于后一个的起点. /****** ...

  2. 【leetcode】56. Merge Intervals 相邻线段归并

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

  3. C#LeetCode刷题之#56-合并区间(Merge Intervals)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3676 访问. 给出一个区间的集合,请合并所有重叠的区间. 输入: ...

  4. 【细节实现题】LeetCode 56. Merge Intervals

    LeetCode 56. Merge Intervals Solution1:我的答案 这道题思路不难,有个坑爹的地方在于输入的区间向量未必是有序的,所以利用优先队列priority_queue来排序 ...

  5. 56. Merge Intervals(合并区间)解法(C++ 注释)

    56. Merge Intervals(合并区间) 1. 题目描述 2. 排序(Sorting) 2.1 解题思路 2.2 实例代码 1. 题目描述 给出一个区间的集合,请合并所有重叠的区间. 示例 ...

  6. LeetCode 56. Merge Intervals

    原题链接在这里:https://leetcode.com/problems/merge-intervals/ 题目: Given a collection of intervals, merge al ...

  7. Merge Intervals

    代码: 1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 5 using namesp ...

  8. LeetCode Merge Intervals

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

  9. LeetCode:Merge Intervals

    题目链接 Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6 ...

  10. merge intervals(合并间隔)

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

最新文章

  1. Hbase数据模型 列族
  2. Linux ps aux指令詳解--转
  3. python工具包_python 工具包
  4. Panda处理文本和时序数据?首选向量化
  5. mysql gtid 主主_mysql GTID主从复制(主库在线,添加新丛库)
  6. 自定义数字格式字符串_部分分隔符和条件格式
  7. Sakai 20.0 部署
  8. gg 修改器游戏被保护_2.游戏so防封的制作思路
  9. python moving average_Python实现滑动平均(Moving Average)的代码教程
  10. 【GNN】task1-简单图论 Data类-PyG中图的表示及使用
  11. notepad++设置背景颜色为豆沙绿
  12. Atitit ffmpeg功能表 多媒体处理类库工具 音频视频 1.1.ffmpeg音视频合成  1.2.Atitit 视频音频分离 提取法 1.3.ffmpeg对视频封装和分离 使用ffmpeg对
  13. 这是用原声js编写的地址选择器,使用select编写的三联选择器
  14. c语言自动输入0到1000,c语言实现输入一组数自动从大到小排列
  15. Oracle之创建定时任务
  16. r8169驱动源码阅读记录
  17. 针式打印机及微型打印机突然不能打印的问题分析和解决办法
  18. h3c linux静态链路聚合,h3c核心交换机接海康交换机链路聚合该怎么做静态的
  19. Linux命令行提示符颜色设置PS1
  20. java程序员几大成长法则!

热门文章

  1. shell脚本格式的几点注意:格式严格,空格不能随便出现(一写就记不住)
  2. 079 pandas模块
  3. 数据库链接池c3p0配置踩坑
  4. js中的Math对象及属性
  5. 模块化分析设计(简单的注册登录模块)
  6. 学了这几招,社交时人人都对你刮目相看
  7. .Net CF 开发菜鸟笔记(PDA应用开发)
  8. 一条SQL语句查询出成绩名次 排名 (转)
  9. 进程cpu使用率的计算
  10. Selenium如何处理类悬浮弹出菜单