题目链接:436. 寻找右区间
用二分查找,时间复杂度 $O(nlog(n))$。
from bisect import bisect_left
from typing import List
class Solution:
def findRightInterval(self, intervals: List[List[int]]) -> List[int]:
sorted_intervals = sorted((a, i) for i, (a, _) in enumerate(intervals))
ret = []
for _, b in intervals:
i = bisect_left(sorted_intervals, (b, -1))
ret.append(-1 if i >= len(sorted_intervals) else sorted_intervals[i][1])
return ret