一、问题描述

二、解题思路
首先,将原数组按照从小到大排序,使用map记录每个元素的序号index,最后将arr中的元素替换为元素对应的hash值即可。
三、代码实现
cpp
class Solution {
public:
vector<int> arrayRankTransform(vector<int>& arr) {
vector<int> v(arr.begin(),arr.end());
sort(v.begin(),v.end());
unordered_map<int,int> hash;
int index=1;
//统计每个元素的序号
for(int x:v){
if(hash.count(x)==0){
hash[x]=index;
index++;
}
}
//修改原数组
for(int i=0;i!=arr.size();i++)
arr[i]=hash[arr[i]];
return arr;
}
};