- 力扣原题:
- 题目简述:
- 解题思路:
- C++代码:
- 结果展示:
力扣原题:
1331. 数组序号转换
题目简述:给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。
序号代表了一个元素有多大。序号编号的规则如下:
序号从 1 开始编号。
一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。
每个数字的序号都应该尽可能地小。
- 哈希大法好;
- 利用哈希大法来去重与排序;
- 然后完成替换即可;
- over;
class Solution {
public:
vector arrayRankTransform(vector& arr) {
vector res(arr);
sort(arr.begin(), arr.end());
unordered_map umap;
int j = 0;
for(auto & i : arr)
{
if(umap.count(i) == 0)
{
umap[i] = ++j;
}
}
int n = res.size();
for(int i = 0; i < n; i++)
{
res[i] = umap[res[i]];
}
return res;
}
};
结果展示:



