LeetCode 506. 相对名次(map)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 506. 相对名次(map)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 題目
給出 N 名運(yùn)動(dòng)員的成績(jī),找出他們的相對(duì)名次并授予前三名對(duì)應(yīng)的獎(jiǎng)牌。
前三名運(yùn)動(dòng)員將會(huì)被分別授予 “金牌”,“銀牌” 和“ 銅牌”(“Gold Medal”, “Silver Medal”, “Bronze Medal”)。
(注:分?jǐn)?shù)越高的選手,排名越靠前。)
示例 1: 輸入: [5, 4, 3, 2, 1] 輸出: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"] 解釋: 前三名運(yùn)動(dòng)員的成績(jī)?yōu)榍叭叩?#xff0c; 因此將會(huì)分別被授予 “金牌”,“銀牌”和“銅牌” ("Gold Medal", "Silver Medal" and "Bronze Medal"). 余下的兩名運(yùn)動(dòng)員,我們只需要通過他們的成績(jī)計(jì)算將其相對(duì)名次即可。 提示: N 是一個(gè)正整數(shù)并且不會(huì)超過 10000。 所有運(yùn)動(dòng)員的成績(jī)都不相同。來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/relative-ranks
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
class Solution { public:vector<string> findRelativeRanks(vector<int>& nums) {map<int,int> m;//分?jǐn)?shù)--下標(biāo)int i, k = 4, n = nums.size();for(i = 0; i < nums.size(); ++i)m[nums[i]] = i;//map是有序的,默認(rèn)升序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
總結(jié)
以上是生活随笔為你收集整理的LeetCode 506. 相对名次(map)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 333. 最大 BST
- 下一篇: LeetCode 492. 构造矩形