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

浙公网安备 33010602011771号