题目来源:
leetcode题目,网址:506. 相对名次 - 力扣(LeetCode)
解题思路:
对所给数组进行排序后遍历原数组,根据其在新数组中的位置按要求添加名次或奖励,最后返回即可。
解题代码:
class Solution {
public String[] findRelativeRanks(int[] score) {//所有值互不相同
int length=score.length;
String[] res=new String[length];
int[] rank=Arrays.copyOf(score,length);
Arrays.sort(rank);
for(int i=0;i<length;i++){
int pos=Arrays.binarySearch(rank,score[i]);
if(pos==length-1){
res[i]="Gold Medal";
}else if(pos==length-2){
res[i]="Silver Medal";
}else if(pos==length-3){
res[i]="Bronze Medal";
}else{
res[i]=(length-pos)+"";
}
}
return res;
}
}
总结:
排序和查找都是调用API的,不想写代码。
官方题解将一维数组转变为二维数组,通过新增的空间存放其原来位置,从而避免查找元素。