欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

思路:

  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;

即可:

LintCode 题目:相对排名