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:
- You may assume the interval's end point is always bigger than its start point.
- 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.
感觉用了非主流的做法,击败人数比较低..讲一讲我的思路,我是采用两个hashmap来解这道题的。题目的要求是,求出当前区间紧挨着的右区间的index值,如果不存在那么设置成-1。我的想法是,先用一个ha shmap保存原始数组中interval[i].start跟i (也就是start的值与当前元素下标的对应关系的ha sh ma p)。然后,再复制出一个按照start升序排列的新数组。然后再遍历的过程中,内层循环用于寻找距离它最近靠右的那个区间,保存到另个ha shmap中, 这个新的hashmap保存的是当前interval[i].start与跟他