题目:
给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。
序号代表了一个元素有多大。序号编号的规则如下:
序号从 1 开始编号。
一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。
每个数字的序号都应该尽可能地小。
思考:
代码:
class Solution{
public:
vector<int> arrayRankTransform(vector<int>&arr){
vector<int> sortArr =arr;
sort(sortArr.begin(),sortArr.end());
unordered_map<int,int> ranks;
vector<int> ans(arr.size());
for(auto: &a :sortArr){
if(!ranks.count(a)){
ranks[a] = ranks.size()+1;
}
}
for(int i= 0;i<arr.size();++i){
ans[i] =ranks[arr[i]];
}
return ans;
}
};