zoukankan      html  css  js  c++  java
  • Leetcode506.Relative Ranks相对名次

    给出 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。所有运动员的成绩都不相同。

    
    bool cmp1(int x, int y)
    {
        return x > y;
    }
    
    class Solution {
    public:
        int BS(vector<int> nums, int target)
        {
            int low = 0;
            int high = nums.size() - 1;
            while(low <= high)
            {
                int mid = (low + high) / 2;
                if(nums[mid] == target)
                {
                    return mid;
                }
                else if(nums[mid] < target)
                {
                    high = mid - 1;
                }
                else
                {
                    low = mid + 1;
                }
            }
            return low;
        }
        vector<string> findRelativeRanks(vector<int>& nums) {
            int len = nums.size();
            vector<int> nums2 = nums;
            sort(nums2.begin(), nums2.end(), cmp1);
            vector<string> res;
            for(int i = 0; i < len; i++)
            {
                if(nums[i] == nums2[0])
                {
                    res.push_back("Gold Medal");
                }
                else if(nums[i] == nums2[1])
                {
                    res.push_back("Silver Medal");
                }
                else if(nums[i] == nums2[2])
                {
                    res.push_back("Bronze Medal");
                }
                else
                {
                    string temp = "";
                    temp = temp + (to_string(BS(nums2, nums[i]) + 1));
                    res.push_back(temp);
                }
            }
            return res;
        }
    };
    
  • 相关阅读:
    快速幂模板
    部分有关素数的题
    POJ 3624 Charm Bracelet (01背包)
    51Nod 1085 背包问题 (01背包)
    POJ 1789 Truck History (Kruskal 最小生成树)
    HDU 1996 汉诺塔VI
    HDU 2511 汉诺塔X
    HDU 2175 汉诺塔IX (递推)
    HDU 2077 汉诺塔IV (递推)
    HDU 2064 汉诺塔III (递推)
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10434070.html
Copyright © 2011-2022 走看看