关于以下代码有一个一直想不通的问题,求助大佬
arr数组按照score降序排序了
可是第二个循环的时候循环的并不是arr数组啊,循环的是传入的数组score
为什么他就断定i<3就是score最大的三个数呢
难道看似是arr,其实是给score排序呢?
转不过来了
public String[] findRelativeRanks(int[] score) {
int n = score.length;
String[] desc = {"Gold Medal", "Silver Medal", "Bronze Medal"};
int[][] arr = new int[n][2];
for (int i = 0; i < n; ++i) {
arr[i][0] = score[i];
arr[i][1] = i;
}
Arrays.sort(arr, (a, b) -> b[0] - a[0]); // 降序排序,按照成绩排序,所以用score[i]对应的二维下标0,也就是b[0]
String[] ans = new String[n];
for (int i = 0; i < n; ++i) {
if (i >= 3) {
ans[arr[i][1]] = Integer.toString(i + 1);
} else {
ans[arr[i][1]] = desc[i];
}
}
return ans;
}