0
点赞
收藏
分享

微信扫一扫

leetcode436. 寻找右区间

源码之路 2022-03-26 阅读 59
python

二分加哈希表加排序

def findRightInterval(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[int]
        """
        def bs(array,k):
            l,r = 0,len(intervals)-1
            if array[r] < k:
                return -1
            while l <= r:
                m = l + (r-l)//2
                if array[m] < k:
                    l = m+1
                else:
                    r = m-1
            return l
        array = [0]*len(intervals)
        nums = collections.defaultdict()
        res = [-1]*len(intervals)
        for x in range(len(intervals)):
            array[x] = intervals[x][0]
        for k in range(len(array)):
            nums[array[k]] = k
        array.sort()
        for i in range(len(intervals)):
            y = bs(array,intervals[i][1])
            if y == -1:
                res[i] = -1
            else:
                res[i] = nums.get(array[y])
        return res
举报

相关推荐

0 条评论