class Solution {
    public String[] findRelativeRanks(int[] score) {

        /**
         * 优先队列的元素是数组,因此必须要重写compare()方法,但只需要比较int[0]即可
         */
        PriorityQueue<int[]> pq = new PriorityQueue<>(new Comparator<int[]>() {
            
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];
            }
        });

        for (int i = 0; i < score.length; i++) {
            pq.add(new int[]{score[i], i});
        }

        String[] strs = new String[score.length];

        int n = score.length;

        while (pq.size() > 0) {

            if (n == 1){
                strs[pq.poll()[1]] = "Gold Medal";
            }
            else if (n == 2){
                strs[pq.poll()[1]] = "Silver Medal";
            }
            else if (n == 3){
                strs[pq.poll()[1]] = "Bronze Medal";
            }
            else {
                strs[pq.poll()[1]] = Integer.toString(n);
            }
            
            n--;
        }
        
        return strs;
    }
}

https://leetcode-cn.com/problems/relative-ranks/