LeetCode Relative Ranks

LeetCode Relative Ranks Given scores of N athletes, find their relative ranks and the people with the top three highest scores, who will be awarded medals: “Gold Medal”, “Silver Medal” and “Bronze Medal”. Example 1:

Input: [5, 4, 3, 2, 1]
Output: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]
Explanation: The first three athletes got the top three highest scores, so they got "Gold Medal", "Silver Medal" and "Bronze Medal".
For the left two athletes, you just need to output their relative ranks according to their scores.
Note:
  1. N is a positive integer and won’t exceed 10,000.
  2. All the scores of athletes are guaranteed to be unique.

给定N个运动员的得分,要求输出他们的相对排序,前三名还需要颁发金银铜奖牌。 简单题,构造分数和下标的pair,然后对他们排序,得到相对排名之后,转换为string输出。 代码如下: [cpp] class Solution { public: vector<string> findRelativeRanks(vector<int>& nums) { vector<pair<int, int>> scores; int n = nums.size(); for (int i = 0; i < n; ++i)scores.push_back(pair<int, int>(nums[i], i)); sort(scores.begin(), scores.end(), greater<pair<int,int>>()); vector<string> ans(n, ""); vector<string> medals = { "Gold Medal", "Silver Medal", "Bronze Medal" }; for (int i = 0; i < min(3, n); ++i)ans[scores[i].second] = medals[i]; for (int i = 3; i < n; ++i)ans[scores[i].second] = to_string(i + 1); return ans; } }; [/cpp] 本代码提交AC,用时13MS。]]>

Leave a Reply

Your email address will not be published. Required fields are marked *