973. K Closest Points to Origin
題目網址:https://leetcode.cn/problems/k-closest-points-to-origin/
題意:給一 array
points和一整數k, 其中points[i] = [x_i, y_i]表示平面上的一個點, 返回距離(0, 0)最近的k個點。平面上兩點的距離是採用歐式距離 $\sqrt{(x1 - x2)^2 + (y1 - y2)^2}$
可以按任何順序返回答案。


Solution:
想法:利用 Heap, 用 max heap 維護前
k小的元素, 類似 347. Top K Frequent Elements
- 先將前
k個元素加入到 max heap 中- 後面
n - k個點, 都是先 insert 到 heap 中再 pop 掉, 來維持 heap 中k個元素- 此時, heap 中為前
k小的元素, 將其取出即可
typedef tuple<int, int, int> t3i; // {dist, x, y} |
- time:$O(n \cdot log(k))$ ➔ 前面兩個 for loop 最多 insert/delete
n個點, 每次操作需 $O(log(k))$, 因為pq中最多k個點 - space:$O(k)$ ➔
pq最多有k個元素
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論