506. 相对名次
思路:哈希+排序
先复制一遍原数组并排序,通过哈希保存每个元素名次,最后遍历一遍原数组对应的名次放入resresres中
时间复杂度:O(nlogn)O(nlogn)O(nlogn) 排序
空间复杂度:O(n)O(n)O(n) 哈希表、复制数组
class Solution {
public:
vector<string> findRelativeRanks(vector<int>& score) {
vector<string> res;
unordered_map<int, string> hash;
vector<int> a = score;
sort(a.begin(), a.end());
string models[3] = {"Gold Medal", "Silver Medal", "Bronze Medal"};
for (int i = a.size() - 1; i >= 0; i -- ) {
int rank = a.size() - i;
if (rank <= 3)
hash[a[i]] = models[rank - 1];
else
hash[a[i]] = to_string(rank);
}
for (auto& t : score)
res.push_back(hash[t]);
return res;
}
};
该博客介绍了如何利用哈希表和排序算法来求解相对名次的问题。首先,博主复制原数组并进行排序,然后通过哈希表记录每个元素的排名。如果排名在前3,则赋予金银铜牌的标签,否则记录其具体排名。最后,遍历原数组并返回每个元素的相对名次。这个解决方案的时间复杂度为O(nlogn),空间复杂度为O(n)。
247

被折叠的 条评论
为什么被折叠?



