413周赛·第二题 - 3275. 第 K 近障碍物查询

题目链接 3275. 第 K 近障碍物查询
思路 大根堆
题解链接 最大堆维护前 k 小(Python/Java/C++/Go)
关键点 第k小元素”应转换为“大根堆”
时间复杂度 \(O(n \log k)\)
空间复杂度 \(O(n)\)

代码实现:

class Solution:
    def resultsArray(self, queries: List[List[int]], k: int) -> List[int]:
        answer = [-1] * len(queries)
        
        h = []
        for i, (x, y) in enumerate(queries):
            heappush(h, -abs(x)-abs(y))
            if len(h) > k:
                heappop(h)
            if len(h) == k:
                answer[i] = -h[0]
        
        return answer
posted @ 2024-09-09 02:17  WrRan  阅读(27)  评论(0)    收藏  举报