方法一
復制數組+排序+返回對應下標
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]);
返回數組中某個元素的下標,若不存在返回負數。要求數組已經按升序排列