LintCode 题目:相对排名

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"]
说明:前三名运动员获得前三名最高分,因此获得“金牌”,“银牌”和“铜牌”。
对于后两名运动员,你只需要根据他们的分数输出他们的相对等级。

思路:

  1. 先将成绩排序;
  2. 在排好序的成绩数组中查找当前成绩的位置;
  3. 排好序的成绩数组中的位置就是当前成绩的排名,转换为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;

即可:

发布了303 篇原创文章 · 获赞 550 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_42410605/article/details/103092558