优先队列排序最后取出最小的k个
class Solution {
public int[][] kClosest(int[][] points, int k) {
PriorityQueue<Pair<Integer,Integer>> q =
new PriorityQueue<Pair<Integer,Integer>>((a,b) -> a.getValue() - b.getValue());
int n = points.length;
int ans[][] = new int [k][2];
for(int i=0;i<n;i++){
q.offer(new Pair(i,points[i][0]*points[i][0] + points[i][1]*points[i][1]));
}
int cnt = 0;
for(int i=0;i<k;i++){
Pair<Integer,Integer> tem = q.poll();
ans[cnt][0] = points[tem.getKey()][0];
ans[cnt++][1] = points[tem.getKey()][1];
}
return ans;
}
}
本文介绍如何使用优先队列(如Java的`PriorityQueue`)来解决k个最接近原点的点的问题,通过计算每个点到原点的距离并保持最小距离的元素,实现高效排序并返回答案。
3208

被折叠的 条评论
为什么被折叠?



