LeetCode 973. K Closest Points to Origin 优先队列

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

猜你喜欢

转载自blog.csdn.net/Dale_zero/article/details/120219947