优先队列排序最后取出最小的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;
}
}