给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”("Gold Medal", "Silver Medal", "Bronze Medal")。
(注:分数越高的选手,排名越靠前。)
示例 1:
输入: [5, 4, 3, 2, 1]
输出: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]
解释: 前三名运动员的成绩为前三高的,因此将会分别被授予 “金牌”,“银牌”和“铜牌” ("Gold Medal", "Silver Medal" and "Bronze Medal").
余下的两名运动员,我们只需要通过他们的成绩计算将其相对名次即可。
提示:
N 是一个正整数并且不会超过 10000。
所有运动员的成绩都不相同。
C++
class Solution {
public:
vector<string> findRelativeRanks(vector<int>& nums)
{
int n=nums.size();
vector<string> res(n,"");
map<int,int> tmp;
for(int i=0;i<n;i++)
{
tmp[nums[i]]=i;
}
int ranking=1;
for(auto it=tmp.rbegin();it!=tmp.rend();it++)
{
if(1==ranking)
{
res[it->second]="Gold Medal";
}
else if(2==ranking)
{
res[it->second]="Silver Medal";
}
else if(3==ranking)
{
res[it->second]="Bronze Medal";
}
else
{
res[it->second]=to_string(ranking);
}
ranking++;
}
return res;
}
};
python
class Solution:
def findRelativeRanks(self, nums):
"""
:type nums: List[int]
:rtype: List[str]
"""
n=len(nums)
res=["" for i in range(n)]
dic={}
for i in range(n):
if nums[i] not in dic:
dic[nums[i]]=i
tmp=sorted(dic.keys())
tmp.reverse()
for i in range(n):
if 0==i:
res[dic[tmp[i]]]="Gold Medal"
elif 1==i:
res[dic[tmp[i]]]="Silver Medal"
elif 2==i:
res[dic[tmp[i]]]="Bronze Medal"
else:
res[dic[tmp[i]]]=str(i+1)
return res