436. 寻找右区间

exiaohu 于 2022-05-20 发布

题目链接: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