• 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;
             }
     }



    工作小总结,有错请指出,谢谢。
  • 相关阅读:
    Javascript 时间Date()的一般用法
    vue搭建
    初次见面
    css3边框
    appium移动自动化测试-one demo
    appium移动自动化测试-安装2
    appium移动自动化测试-安装1
    python数据类型
    判断软键盘是不是可见
    android 设置Dialog的宽度
  • 原文地址:https://www.cnblogs.com/zilanghuo/p/5329283.html
Copyright © 2020-2023  润新知