我正在通過一些面試問題來解決這個問題。我徹底明白,除了下一行做什麼代碼:使用lambda表達式以降序對二維數組進行排序
Arrays.sort(pair, (a, b) -> (b[0] - a[0]));
ň運動員的考慮分數,找到自己的相對排名和人民前三名得分最高,誰就會獲得勳章:「金獎」 ,「銀牌」和「銅牌」。
實施例1:輸入:[5,4,3,2,1]輸出:[ 「金牌」, 「銀 獎章」, 「銅牌」, 「4」, 「5」]解釋:前三名運動員獲得前三名,獲得「金牌」, 「銀牌」和「銅牌」。對於左邊的兩名運動員,你只需要根據他們的分數輸出他們的相對排名。
public class Solution {
public String[] findRelativeRanks(int[] nums) {
int[][] pair = new int[nums.length][2];
for (int i = 0; i < nums.length; i++) {
pair[i][0] = nums[i];
pair[i][1] = i;
}
Arrays.sort(pair, (a, b) -> (b[0] - a[0]));
String[] result = new String[nums.length];
for (int i = 0; i < nums.length; i++) {
if (i == 0) {
result[pair[i][1]] = "Gold Medal";
}
else if (i == 1) {
result[pair[i][1]] = "Silver Medal";
}
else if (i == 2) {
result[pair[i][1]] = "Bronze Medal";
}
else {
result[pair[i][1]] = (i + 1) + "";
}
}
return result;
}
}
Java如何知道他們正在比較第一列而不是第二列,以及第二列如何「跟隨」第一列的順序。另外,a和b的含義是什麼,是迭代中的下一個項目?感謝您的回答 –
@RodrigoProença該函數接受數組中的2個元素。你的lambda表達式從'(a,b) - > ...'開始的事實''把它們命名爲'a'和'b'。數組中內容的結構取決於你如何構建它。 – btilly