给你一个长度为 n
的整数数组 score
,其中 score[i]
是第 i
位运动员在比赛中的得分。所有得分都 互不相同 。
运动员将根据得分 决定名次 ,其中名次第 1
的运动员得分最高,名次第 2
的运动员得分第 2
高,依此类推。运动员的名次决定了他们的获奖情况:
- 名次第
1
的运动员获金牌"Gold Medal"
。 - 名次第
2
的运动员获银牌"Silver Medal"
。 - 名次第
3
的运动员获铜牌"Bronze Medal"
。 - 从名次第
4
到第n
的运动员,只能获得他们的名次编号(即,名次第x
的运动员获得编号"x"
)。
使用长度为 n
的数组 answer
返回获奖,其中 answer[i]
是第 i
位运动员的获奖情况。
示例 1:
输入:score = [5,4,3,2,1] 输出:["Gold Medal","Silver Medal","Bronze Medal","4","5"] 解释:名次为 [1st, 2nd, 3rd, 4th, 5th] 。
示例 2:
输入:score = [10,3,8,9,4] 输出:["Gold Medal","5","Bronze Medal","Silver Medal","4"] 解释:名次为 [1st, 5th, 3rd, 2nd, 4th] 。
提示:
n == score.length
1 <= n <= 104
0 <= score[i] <= 106
score
中的所有值 互不相同
思路:我们要找到每个得分所处的排名,然后返回原数组中该得分的排名,所以将得分和排名的关系一一对应起来很重要;我们可以先对数组进行降序排序,然后使用字典来建立得分和排名的映射关系,然后返回原数组中每个得分所处的排名,注意题目要求的排名是字符串类型。
代码(Python):
class Solution(object):def findRelativeRanks(self, score):score_copy = sorted(score,reverse = True) #对score降序排序dict = {} #创建字典for i in range(len(score_copy)): #创建得分-排名的映射关系dict[score_copy[i]] = i+1result = []for i in range(len(score)):if dict[score[i]] == 1:result.append("Gold Medal")elif dict[score[i]] == 2:result.append("Silver Medal")elif dict[score[i]] == 3:result.append("Bronze Medal")else:result.append(str(dict[score[i]]))return result