方法一
复制数组+排序+返回对应下标
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]);
返回数组中某个元素的下标,若不存在返回负数。要求数组已经按升序排列