力扣 973. 最接近原点的 K 个点
class Solution {
public:
struct cmp {
bool operator()(pair<vector<int>, int> a,pair<vector<int>, int> b) {
return a.second < b.second;
}
};
vector<vector<int>> kClosest(vector<vector<int>>& points, int k) {
vector<pair<vector<int>, int>> mp;
for (auto point : points) {
mp.push_back(make_pair(point,point[0] * point[0] + point[1] * point[1]));
}
priority_queue<pair<vector<int>, int>, vector<pair<vector<int>, int> >, cmp> q;
for (auto m : mp) {
q.push(m);
if (q.size() > k) {
q.pop();
}
}
vector<vector<int>> ans;
while (!q.empty()) {
ans.push_back(q.top().first);
q.pop();
}
return ans;
}
};