题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个二维数组,每个其中的一维数组代表一个点,求从左向右遍历,已遍历点中距离原点第 k 近的那个距离(x 的绝对值加 y 的绝对值)

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution:
def resultsArray(self, queries: List[List[int]], k: int) -> List[int]:
rec = []
ans = [-1] * len(queries)
heapq.heapify(rec)
for i, (x, y) in enumerate(queries):
heapq.heappush(rec, -(abs(x)+abs(y)))
if i < k-1:
continue
if len(rec) > k:
heapq.heappop(rec)
ans[i] = -rec[0]
return ans