506.相对名次
题目描述
思路
哈希表+排序
使用哈希表记录每个人对应的分数,对score数组排序,创建ans数组,保存每个人的名次,并返回。
Python实现
class Solution:
def findRelativeRanks(self, score: List[int]) -> List[str]:
ans, d = [None] * len(score), dict()
for key, value in enumerate(score):
d[value] = key
score.sort(reverse=True)
for key, value in enumerate(score, 1):
if key <= 3:
ans[d[value]] = ["", "Gold Medal", "Silver Medal", "Bronze Medal"][key]
else:
ans[d[value]] = str(key)
return ans
Java实现
class Solution {
private static final String[] SSP = new String[]{"Gold Medal", "Silver Medal", "Bronze Medal"};
public String[] findRelativeRanks(int[] score) {
Map<Integer, Integer> map = new HashMap<>();
String[] ans = new String[score.length];
for (int i = 0; i <score.length; i++) {
map.put(score[i], i);
}
Arrays.sort(score);
for (int i = 0; i < score.length; i++) {
int j = score.length - 1 - i;
ans[map.get(score[i])] = j <= 2 ? SSP[j] : (j + 1) + "";
}
return ans;
}
}