# 973 - K Closest Points to Origin
解法一 - Max Heap
class Solution {
public:
vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
// Store <point, dist> pair into maxHeap
priority_queue< pair<vector<int>, float>, vector<pair<vector<int>, float>>, comp > maxHeap;
for(auto& p: points) {
float dist = sqrt( pow(p[0],2) + pow(p[1], 2) );
maxHeap.push(make_pair(p, dist));
if(maxHeap.size() > K) {
maxHeap.pop();
}
}
// Put all points in maxHeap into the result
vector<vector<int>> res;
for(int i = 0; i < K; i++) {
res.push_back(maxHeap.top().first);
maxHeap.pop();
}
return res;
}
private:
struct comp {
bool operator() (const pair<vector<int>, float>& p1,
const pair<vector<int>, float>& p2) {
return p1.second < p2.second;
}
};
};
Last updated