给你一个长度为 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 位运动员的获奖情况。
//排序函数,从大到小排序
bool compare(int &a,int &b){
return a>b;
}
class Solution {
public:
vector<string> findRelativeRanks(vector<int>& score) {
//复制原数组
vector<int> score1=score;
//对原数组进行排序来确定名次
sort(score.begin(),score.end(),compare);
//创建哈希表映射成绩对应的名次
unordered_map<int,int>paimin;
//获奖名次字符串
vector<string>ans;
//遍历score数组,将成绩映射成名次
for(int i=0;i<score.size();i++){
paimin[score[i]]=i+1;
}
//遍历未排序前的数组
for(auto i=0;i<score1.size();i++){
//如果名次为1
if(paimin[score1[i]]==1){
//在获奖名次中插入金牌
ans.push_back("Gold Medal");
}
//如果名次为2
else if(paimin[score1[i]]==2){
//插入银牌
ans.push_back("Silver Medal");
}
//如果名次为3
else if(paimin[score1[i]]==3){
//插入铜牌
ans.push_back("Bronze Medal");
}
else{
//其他名次都插入字符串名次 to_string 将名次转为字符串
ans.push_back(to_string(paimin[score1[i]]));
}
}
//返回名次字符串数组
return ans;
}
};
251

被折叠的 条评论
为什么被折叠?



