• 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 }
  • 相关阅读:
    scrapy-redis使用以及剖析
    框架----Django之ModelForm组件
    框架----Django内置Admin
    django2.0集成xadmin0.6报错集锦
    为什么有些编程语言的数组要从零开始算
    Ubuntu安装Python3 和卸载
    安装MariaDB和简单配置
    ubuntu配置Python-Django Nginx+uwsgi 安装配置
    windows通过ssh连接虚拟机中的ubuntu步骤
    mysql数据库的相关练习题及答案
  • 原文地址:https://www.cnblogs.com/bywallance/p/5757242.html
Copyright © 2020-2023  润新知