zoukankan      html  css  js  c++  java
  • 56. 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     public List<Interval> merge(List<Interval> intervals) {
     2         List<Interval> list = new ArrayList<Interval>();
     3         //排序,实现了Comparator接口
     4 //        Collections.sort(intervals, new Comparator<Interval>() {
     5 //            @Override
     6 //            public int compare(Interval o1, Interval o2) {
     7 //                // TODO Auto-generated method stub
     8 //                return o1.start - o2.start;//起始值升序排序
     9 //            }
    10 //        });
    11         intervals.sort((Interval o1, Interval o2)->{ return o1.start - o2.start;});//起始值升序排序
    12 
    13         if (intervals.size() == 0)
    14             return list;
    15 
    16         Interval i1 = intervals.get(0);
    17         //遍历
    18         for (int i = 0; i < intervals.size(); i++) {
    19             Interval i2;
    20             //分情况i2赋值
    21             if (i == intervals.size() - 1)//如果i到最后,增加一个虚拟最大的区间
    22                 i2 = new Interval(Integer.MAX_VALUE, Integer.MAX_VALUE);
    23             else//否则,i2最后i1后面的值
    24                 i2 = intervals.get(i + 1);
    25             //合并区间
    26             if (i2.start >= i1.start && i2.start <= i1.end) {
    27                 i1.end = Math.max(i1.end, i2.end);
    28             } else {//没有交集,直接添加
    29                 list.add(i1);
    30                 i1 = i2;//i1更迭
    31             }
    32         }
    33         return list;      
    34     }
  • 相关阅读:
    shiro注解,初始化资源和权限,会话管理
    shiro标签
    20个为前端开发者准备的文档和指南
    Canvas处理头像上传
    Chrome 实用调试技巧
    JS 代码编一个倒时器
    sql server优化
    在线图片压缩网站
    Request.QueryString
    C#网络爬虫
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7675872.html
Copyright © 2011-2022 走看看