1.优先队列
利用最小堆,自定义排序序列,自定义数据结构,记录坐标和距离值
代码如下:
class Solution {
struct Node{
int x;
int y;
int abs;
};
struct cmp{
bool operator()(const Node &a,const Node &b)
{
return a.abs>b.abs;
}
};
public:
vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
priority_queue<Node,vector<Node>,cmp> minHeap;//最小堆,升序排列
for(int i=0;i<points.size();i++)
{
minHeap.push({points[i][0],points[i][1],pow(points[i][0],2)+pow(points[i][1],2)});
}
vector<vector<int>> res;
while(K--)
{
res.push_back({minHeap.top().x,minHeap.top().y});
minHeap.pop();
}
return res;
}
};