问题描述
给定一个二维数组,表示区间的集合。定义区间右侧区间为:区间 i
的右侧区间可以记作区间 j
,并满足 startj`` >= endi
,且 startj
最小化 。注意 i
可能等于 j
。 题目链接:点我
样例输入输出
输入:intervals = [[3,4],[2,3],[1,2]]
输出:[-1,0,1]
解释:对于 [3,4] ,没有满足条件的“右侧”区间。
对于 [2,3] ,区间[3,4]具有最小的“右”起点;
对于 [1,2] ,区间[2,3]具有最小的“右”起点。
输入:intervals = [[1,4],[2,3],[3,4]]
输出:[-1,2,-1]
解释:对于区间 [1,4] 和 [3,4] ,没有满足条件的“右侧”区间。
对于 [2,3] ,区间 [3,4] 有最小的“右”起点。
问题解法
使用 TreeMap
保存区间左值和区间下标,然后遍历区间,每次取区间右值从 TreeMap
中取出大于等于区间右值的最小 entry
,此时其 value
就是当前区间的右区间。代码如下
1 | class Solution { |