LintCode 题目:相对排名
程序员文章站
2022-03-24 23:42:59
...
URL:https://www.lintcode.com/problem/relative-ranks/description
描述
根据N名运动员的得分,找到他们的相对等级和获得最高分前三名的人,他们将获得奖牌:“金牌”,“银牌”和“铜牌”。
N是正整数,并且不超过10,000。
所有运动员的成绩都保证是独一无二的。
样例
例子 1:
输入: [5, 4, 3, 2, 1]
输出: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]
说明:前三名运动员获得前三名最高分,因此获得“金牌”,“银牌”和“铜牌”。
对于后两名运动员,你只需要根据他们的分数输出他们的相对等级。
思路:
- 先将成绩排序;
- 在排好序的成绩数组中查找当前成绩的位置;
- 排好序的成绩数组中的位置就是当前成绩的排名,转换为string即可。
在代码段中添加:
vector<string> B;
vector<int> A = nums;
sort(A.begin(),A.end(),cmp);
for (int i = 0; i < nums.size(); i++) {
/* code */
for (int j = 0; j < A.size(); j++) {
/* code */
if(nums[i]==A[j]){
if(j==0){
B.push_back("Gold Medal");
}else if(j==1){
B.push_back("Silver Medal");
}else if(j==2){
B.push_back("Bronze Medal");
}else{
B.push_back(to_string(j+1));
}
break;
}
}
}
return B;