zoukankan      html  css  js  c++  java
  • leetcode56. Merge Intervals

    题目要求:

    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 }
  • 相关阅读:
    使用H5Stream实现rtsp流播放,并整合到web项目中
    浏览器通过RTSP协议取流实时显示在web页面(海康威视大华摄像机实时监控)
    Python-----获取excel的所有sheet页,并获取每个sheet页的内容
    MySQL表结构导出成Excel
    Hive 是什么?场景? vs RDBMS
    Scala “_” 的用法总结
    Hadoop主要组件知识点梳理
    javaIO:RandomAccessFile
    javaIO:IO和File
    java io 详细代码实现 纪录
  • 原文地址:https://www.cnblogs.com/bywallance/p/5757242.html
Copyright © 2011-2022 走看看