[LeetCode]506. Relative Ranks
题目描述
思路
用map保存
计算res的时候直接逆序遍历map即可
代码
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
class Solution {
public:
vector<string> findRelativeRanks(vector<int>& nums) {
map<int, int> m;
int rank = nums.size();
int cnt = 1;
for (int i = 0; i < nums.size(); ++i)
m[nums[i]] = i;
vector<string> res(m.size(), "");
for (map<int, int>::reverse_iterator it = m.rbegin(); it != m.rend(); it++, cnt++) {
if (cnt == 1)
res[it->second] = "Gold Medal";
else if (cnt == 2)
res[it->second] = "Silver Medal";
else if (cnt == 3)
res[it->second] = "Bronze Medal";
else
res[it->second] = to_string(cnt);
}
return res;
}
};
int main() {
vector<int> nums = { 5, 4, 3 };
vector<string> res;
Solution s;
res = s.findRelativeRanks(nums);
for (auto &p : res) {
cout << p << " ";
}
cout << endl;
system("pause");
}