【发布时间】:2017-02-08 23:38:45
【问题描述】:
我正在处理一些面试问题并遇到了这个问题。我完全理解了代码,除了下一行的作用:
Arrays.sort(pair, (a, b) -> (b[0] - a[0]));
给定N名运动员的分数,找出他们的相对排名以及得分最高的前三名的人,他们将获得奖牌:“金牌”、“银牌”和“铜牌” .
示例 1:输入:[5, 4, 3, 2, 1] 输出:["Gold Medal", "Silver 奖牌”、“铜牌”、“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 arrays algorithm lambda