zoukankan      html  css  js  c++  java
  • 57.Insert Interval

    题目链接:https://leetcode.com/problems/insert-interval/description/

    题目大意:给处一个list,里面是按start排好序的非重叠区间,插入一个区间,将重叠区间合并。可见56题。

    法一(借鉴):不用排序直接比较更新。由于初始就是排好序的非重叠区间,所以直接用newInterval与原始list中的区间进行比较即可,如果有重叠则更新newInterval。代码如下(耗时16ms):

     1     public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
     2         LinkedList<Interval> res = new LinkedList<Interval>();
     3         int i = 0;
     4         //将所有start前未重叠部分add进res中
     5         while(i < intervals.size() && intervals.get(i).end < newInterval.start) {
     6             res.add(intervals.get(i++));
     7         }
     8         //如果有重叠部分,即intervals.get(i).start < newInterval.end时,则更新newInterval
     9         //注意这里是比较start和end,而不是end和end,因为如果比较end和end,会漏掉最后一个newInterval.end<intervals.get(i).end的区间
    10         //而可以想象,只要有intervals.get(i).start < newInterval.end,则说明有区间重叠
    11         while(i < intervals.size() && intervals.get(i).start < newInterval.end) {
    12             newInterval = new Interval(Math.min(intervals.get(i).start, newInterval.start), Math.max(intervals.get(i++).end, newInterval.end));
    13         }
    14         //将更新后的newInterval加入res
    15         res.add(newInterval);
    16         //将end后未重叠部分add进res中,其实这里初始给出的list已经保证了每个区间都未重叠
    17         while(i < intervals.size()) {
    18             res.add(intervals.get(i++));
    19         }
    20         return res;
    21     }
    View Code
  • 相关阅读:
    php基本语法
    php的环境搭建
    Java数组及其内存分配
    最快的maven镜像
    配置maven到运行
    配置maven
    maven的eclise配置
    mysql中bit_count和bit_or函数的含义
    怎样查看MySQL是否区分大小写
    linux忘记mysql密码找回方法
  • 原文地址:https://www.cnblogs.com/cing/p/8513319.html
Copyright © 2011-2022 走看看