相对名次
方法:模拟
根据题意,我们可以先对score数组进行拷贝并排序,利用分数各不同,对排序数组中分值进行名称编号存入哈希表,再利用名次编号构造答案
class Solution{
String [] ss=new String[]{"Gold Medal","Silver Medal","Bronze Medal"};
public String [] findRelativeRanks(int[] score){
int n=score.length;
String[] ans = new String[n];
int[] clone = score.clone();
Arrays.sort(clone);
Map<Integer, Integer> map = new HashMap<>();
for(int i=n-1;i>=0;i--)
map.put(clone[i],n-1-i);
for(int i=0;i<n;i++){
int rank = map.get(score[i]);
ans[i]=rank<3?ss[rank]:String.valueOf(rank+1);
}
return ans;
}
}
|