zoukankan      html  css  js  c++  java
  • FG面经: Interval问题合集

    How to insert interval to an interval list. List is not sorted

    O(N) solution:

     1 package fb;
     2 import java.util.*;
     3 
     4 class Interval {
     5     int start;
     6     int end;
     7     public Interval(int s, int e) {
     8         start = s;
     9         end = e;
    10     }
    11 }
    12 
    13 
    14 public class InsertInterval {
    15 
    16 
    17     
    18     public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
    19 
    20         ArrayList<Interval> res = new ArrayList<Interval>();
    21         for (Interval interval : intervals) {
    22             if (interval.end < newInterval.start || interval.start>newInterval.end) {
    23                 res.add(interval);
    24             }
    25             else {
    26                 newInterval.start = Math.min(newInterval.start, interval.start);
    27                 newInterval.end = Math.max(newInterval.end, interval.end);
    28             }
    29         }
    30         res.add(newInterval);
    31         return res;
    32     }
    33     
    34     /**
    35      * @param args
    36      */
    37     public static void main(String[] args) {
    38         // TODO Auto-generated method stub
    39         InsertInterval sol = new InsertInterval();
    40         Interval i1 = new Interval(1,3);
    41         Interval i2 = new Interval(6,9);
    42         Interval i3 = new Interval(100,102);
    43         List<Interval> intervals = new ArrayList<Interval>();
    44         intervals.add(i2);
    45         intervals.add(i1);
    46         intervals.add(i3);
    47         List<Interval> res = sol.insert(intervals, new Interval(3,7));
    48         for (Interval each : res) {
    49             System.out.print(each.start);
    50             System.out.println(each.end);
    51         }
    52     }
    53 
    54 }

    两个interval overlap条件:

    interval1.end >= interval2.start && interval1.start <= interval2.end

    问:一个query数在不在已经加入的区间?

    如果interval是sorted, 就可以binary search, 插入位置的上一个interval, 判断是否在那个interval里面

    如果没有sorted, 只能挨个比了

  • 相关阅读:
    关于打开或关闭Windows功能呈现空白的问题
    顺序表(C++)
    新的旅途
    javascript初识——初学1
    读:程序员成长路线图.后感
    学习之路十六:自定义数据库通用类 → 模仿+改进
    20120716 → 20120722 周总结
    工作的思考五:冷静分析SQL
    20120708 → 20120715 周总结
    20120813 → 20120819 周总结
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/6358623.html
Copyright © 2011-2022 走看看