zoukankan      html  css  js  c++  java
  • leetcode:Merge Interval

    1、

      Given a collection of intervals, merge all overlapping intervals.

    [                     [
      [1, 3],               [1, 6],
      [2, 6],      =>       [8, 10],
      [8, 10],              [15, 18]
      [15, 18]            ]
    ]
    2、思路
      1、对所有的集合排个序,按小到大
      2、迭代判断,从第一个判断,如果第二个的start 小于第一个的end,end重新判断
      3、如果大于,间断,添加到集合里面
      4、最后,添加进集合。
    3、代码
      
    public class MergeIntervals {
    
        public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
            if (intervals == null || intervals.size() <= 1) {
                return intervals;
            }
                   //排序
            Collections.sort(intervals, new IntervalComparator());
            ArrayList<Interval> result = new ArrayList<Interval>();
            Interval last = intervals.get(0);
            for (int i = 1; i < intervals.size(); i++) {
                Interval curt = intervals.get(i);
    //区间判断
                if (curt.start <= last.end) {
                    last.end = Math.max(last.end, curt.end);
                } else {
                    result.add(last);
                    last = curt;
                }
            }
            result.add(last);
            return result;
        }
    
        private class IntervalComparator implements Comparator<Interval> {
            public int compare(Interval a, Interval b) {
                return a.start - b.start;
            }
        }
    }
    
     class Interval {
            int start, end;
            Interval(int start, int end) {
                 this.start = start;
                 this.end = end;
             }
     }



    工作小总结,有错请指出,谢谢。
  • 相关阅读:
    php生成二维码
    赞的算法
    Linux系统信息查看命令大全
    详细介绍Linux telnet命令的使用
    Linux VSFTP服务器
    禁止浏览器缓存页面的方法
    php开启短标签
    BZOJ2648 SJY摆棋子(KD-Tree)
    KD-Tree学习笔记
    BZOJ5461 PKUWC2018Minimax(概率期望+线段树合并+动态规划)
  • 原文地址:https://www.cnblogs.com/zilanghuo/p/5329283.html
Copyright © 2011-2022 走看看