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”.

Example 1:

1
2
3
4
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.

Note:

  1. N is a positive integer and won’t exceed 10,000.
  2. All the scores of athletes are guaranteed to be unique.

思路

利用两个哈希表,对其中一个进行排序,再把结果转换到另外一个哈希表中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution(object):
def findRelativeRanks(self, nums):
"""
:type nums: List[int]
:rtype: List[str]
"""
sortmap = {}
result = {}
ans = []
for i,enum in enumerate(nums):
sortmap[i] = enum
length = len(nums)
a = length
for i in sorted(sortmap, key=sortmap.__getitem__):
result[i] = a
a -= 1
print result
for i in range(length):
ans.append(" ")
for i in range(length):
if (result[i] == 1):
ans[i] = "Gold Medal"
elif (result[i] == 2):
ans[i] = "Silver Medal"
elif (result[i] == 3):
ans[i] = "Bronze Medal"
else:
ans[i] = str(result[i])
return ans