方法一
复制数组+排序+返回对应下标
class Solution {
public String[] findRelativeRanks(int[] score) {
int n = score.length;
int[] newScore = Arrays.copyOf(score,n);
Arrays.sort(newScore);
String[] res = new String[n];
for(int i = 0;i<n;i++){
int rank = Arrays.binarySearch(newScore,score[i]);
if(rank==n-1){
res[i] = "Gold Medal";
}
else if(rank==n-2){
res[i] = "Silver Medal";
}
else if(rank==n-3){
res[i] = "Bronze Medal";
}
else{
res[i] = ""+Math.abs(rank - n);
}
}
return res;
}
}
用了几个Arrays工具类的新方法
int[] newScore = Arrays.copyOf(score,n);
n是要复制的数组长度,从下标为0开始复制,如果长度大于原数组,则不足的补零
int rank = Arrays.binarySearch(newScore,score[i]);
返回数组中某个元素的下标,若不存在返回负数。要求数组已经按升序排列