973. K Closest Points to Origin
class Solution {
public:
int cal_dis(vector<int> A) { // 计算距离
return A[0] * A[0] + A[1] * A[1];
}
vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
priority_queue<pair<int, vector<int> > > PQ; // 优先级队列,找出距离最近的前k个
vector<vector<int> > result(K);
for(int ii = 0; ii < points.size(); ii++) {
auto A = points[ii];
PQ.push({-cal_dis(A), A}); // 对距离取相反数,模拟小顶堆
}
for(int ii = 0; ii < K; ii++) {
result[ii] = PQ.top().second;
PQ.pop();
}
return result;
}
};