LeetCode 506. 相对名次(map)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 506. 相对名次(map)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給出 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。 所有運動員的成績都不相同。來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/relative-ranks
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
class Solution { public:vector<string> findRelativeRanks(vector<int>& nums) {map<int,int> m;//分數--下標int i, k = 4, n = nums.size();for(i = 0; i < nums.size(); ++i)m[nums[i]] = i;//map是有序的,默認升序vector<string> ans(nums.size());vector<string> reward = {"Gold Medal", "Silver Medal", "Bronze Medal"};auto rit = m.rbegin();for(i = 0; i < min(3,n); ++i)ans[rit++->second] = reward[i];for( ; rit != m.rend(); ++rit)ans[rit->second] = to_string(k++);return ans;} };32 ms 11 MB
總結
以上是生活随笔為你收集整理的LeetCode 506. 相对名次(map)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 333. 最大 BST
- 下一篇: LeetCode 492. 构造矩形