Given scores of N athletes, find their relative ranks and the people with the top three highest scores, who will be awarded medals: "Gold Medal", "Silver Medal" and "Bronze Medal".
- N is a positive integer and won't exceed 10,000.
- All the scores of athletes are guaranteed to be unique.
Example 1:
- Input: [5, 4, 3, 2, 1]
- Output: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]
- Explanation:
- The first three athletes got the top three highest scores, so they got "Gold Medal", "Silver Medal" and "Bronze Medal".
- For the left two athletes, you just need to output their relative ranks according to their scores.
Python Solution:
class Solution(object):
def findRelativeRanks(self, nums):
"""
:type nums: List[int]
:rtype: List[str]
"""
num_ind = sorted(((num, ind) for ind, num in enumerate(nums)), reverse = True)
idd = {num_ind[1]: i + 1 for i, num_ind in enumerate(num_ind)}
res = []
for i, num in enumerate(nums):
if idd[i] == 1:
res.append("Gold Medal")
elif idd[i] == 2:
res.append("Silver Medal")
elif idd[i] == 3:
res.append("Bronze Medal")
else:
res.append(str(idd[i]))
return res
Summary:
- sort, nothing else.
LeetCode: 506. Relative Ranks
近期评论