zoukankan      html  css  js  c++  java
  • 436. Find Right Interval

    Given a set of intervals, for each of the interval i, check if there exists an interval j whose start point is bigger than or equal to the end point of the interval i, which can be called that j is on the "right" of i.

    For any interval i, you need to store the minimum interval j's index, which means that the interval j has the minimum start point to build the "right" relationship for interval i. If the interval j doesn't exist, store -1 for the interval i. Finally, you need output the stored value of each interval as an array.

    Note:

    1. You may assume the interval's end point is always bigger than its start point.
    2. You may assume none of these intervals have the same start point.

    Example 1:

    Input: [ [1,2] ]
    
    Output: [-1]
    
    Explanation: There is only one interval in the collection, so it outputs -1.

    Example 2:

    Input: [ [3,4], [2,3], [1,2] ]
    
    Output: [-1, 0, 1]
    
    Explanation: There is no satisfied "right" interval for [3,4].
    For [2,3], the interval [3,4] has minimum-"right" start point;
    For [1,2], the interval [2,3] has minimum-"right" start point.

    Example 3:

    Input: [ [1,4], [2,3], [3,4] ]
    
    Output: [-1, 2, -1]
    
    Explanation: There is no satisfied "right" interval for [1,4] and [3,4].
    For [2,3], the interval [3,4] has minimum-"right" start point.

    题目含义:

    题目给了一堆[起始位置,结束位置]的数组,定义了一个个区间。

    任务则是要求对于给定的第I个区间,找到一个最小的j,这里的j的起始位置大于等于I的结束位置。找不到为-1

     1     public int[] findRightInterval(Interval[] intervals) {
     2         int[] result = new int[intervals.length];
     3         TreeMap<Integer, Integer> map = new TreeMap<>();
     4         for (int i = 0; i < intervals.length; i++) map.put(intervals[i].start, i);
     5         for (int i = 0; i < intervals.length; i++) {
     6             // lowerEntry、floorEntry、ceilingEntry 和 higherEntry 方法,它们分别返回与小于、小于等于、大于等于、大于给定键的键关联的 Map.Entry 对象。
     7             Map.Entry<Integer, Integer> item = map.ceilingEntry(intervals[i].end);//找出大于等于intervals[i].end的key
     8             result[i] = (item == null) ? -1 : item.getValue();
     9         }
    10         return result;        
    11     }
  • 相关阅读:
    macbook 无声音解决方案
    webapck dev server代理请求 json截断问题
    百度卫星地图开启
    服务器 nginx配置 防止其他域名绑定自己的服务器
    记一次nginx php配置的心路历程
    遇到npm报错read ECONNRESET怎么办
    运行svn tortoiseSvn cleanup 命令失败的解决办法
    svn add 命令 递归目录下所有文件
    m4出现Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib."
    Ubuntu下安装GCC,mpc、mpfr、gmp
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7723766.html
Copyright © 2011-2022 走看看