413周賽·第二題 - 3275. 第 K 近障礙物查詢

WrRan發表於2024-09-09
題目連結 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

相關文章