leetcode1331 数组序号转换

一、问题描述

二、解题思路

首先,将原数组按照从小到大排序,使用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;
    }
};
相关推荐
ysu_031415 小时前
05 | 持久化撤销提示非核心功能
算法·游戏程序
浮沉98716 小时前
二分查找算法概述&通用模板
算法
Keven_1117 小时前
算法札记:SPFA判负环算法的证明
算法
什巳17 小时前
JAVA练习278- 和为 K 的子数组
java·学习·算法·leetcode
Jerry18 小时前
LeetCode 347. 前 K 个高频元素
算法
Young Doro18 小时前
SAC 算法
线性代数·算法·机器学习
罗超驿18 小时前
2.算法效率的核心密码:时间复杂度和空间复杂度详解
java·数据结构·算法
:-)19 小时前
算法-堆排序
数据结构·算法·排序算法