其他分享
首页 > 其他分享> > 【LeetCode】第31天 - 506. 相对名次

【LeetCode】第31天 - 506. 相对名次

作者:互联网

506. 相对名次

题目描述

在这里插入图片描述

解题思路

代码实现

class Solution {
    public String[] findRelativeRanks(int[] score) {
        int n = score.length;
        String[] topThree = {"Gold Medal", "Silver Medal", "Bronze Medal"};   // 前三名

        String[] res = new String[n];       //  保存结果

        int[] clone = score.clone();        //复制socre

        Arrays.sort(clone);                 //对得分进行排序
        Map<Integer,Integer> map = new HashMap<>();

        for(int i=0;i<n;i++){
            map.put(score[i],i);            //哈希表的key,value分别存放第i位运动员的得分和i
        }
        for(int i=0;i<n;i++){
            if(i<3){
                //n-i-1:clone排序后是递增的,所以我们从后往前
                //根据得分查到该运动员在score中的位置,并在该位置赋值该运动员的名次
                res[map.get(clone[n-i-1])] = topThree[i];       //前三名赋值金银铜牌
            }else{
                res[map.get(clone[n-i-1])] = Integer.toString(i + 1);       //第4 名及以后赋值名次
            }
        }

        return res;
    }
}

标签:名次,String,int,res,clone,LeetCode,score,506,31
来源: https://blog.csdn.net/weixin_43598687/article/details/121681900