• 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].

    思路

    先按照Interval.start进行升序排列,如果前一个front,后一个behind。如果behind.end < front.start不用管,behind.end >= front.end 删除front。behind.end > front.start && behind.end < front.end合并

     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 public class Solution {
    11     public List<Interval> merge(List<Interval> intervals) {
    12         Collections.sort(intervals, new Compare());
    13         boolean isMerge = false;
    14         while(true){
    15             isMerge = false;
    16             for(int i = 0; i < intervals.size() - 1; i++){
    17                 Interval behind = intervals.get(i);
    18                 Interval front    = intervals.get(i + 1);
    19                 if(behind.end < front.start)                                    //后面一个end小于前面的start
    20                     continue;
    21                 else if(behind.end >= front.end)                                //后面一个end大于等于前面的end
    22                 {
    23                     intervals.remove(i + 1);
    24                     isMerge = true;
    25                 }
    26                 else if(behind.end < front.end && behind.end >= front.start){    //后面的end在前面的start和end中间,合并
    27                     behind.end = front.end;
    28                     intervals.remove(i + 1);
    29                     isMerge = true;
    30                 }//else if
    31             }//for
    32             if(!isMerge)
    33                 break;
    34         }
    35         
    36         return intervals;
    37     }
    38 
    39 }
    40 class Compare implements Comparator<Interval>{
    41 
    42     @Override
    43     public int compare(Interval o1, Interval o2) {
    44         if(o1.start < o2.start)
    45             return -1;
    46         else if(o1.start > o2.start)
    47             return 1;
    48         else
    49             return 0;
    50     }
    51 }
  • 相关阅读:
    Linux安全加固
    mosquitto
    Docker设置2375端口
    linux shell 常见的时间戳操作
    tar打包并且排除log目录
    spring boot2整合shiro安全框架实现前后端分离的JWT token登录验证
    http post
    scp命令 Linux和Windows文件互传
    git did not exit cleanly (exit code 1) 的解决办法
    windows安装TortoiseGit详细使用教程【基础篇】
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4254989.html
Copyright © 2020-2023  润新知