題目連結 | 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