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;
    }
};
相关推荐
phltxy10 小时前
C语言操作符详解
java·c语言·算法
RuoZoe10 小时前
从 2026 年 3 月 1 日开源,到 26.10.9:Jalium UI 半年时间到底走了多远?
c语言·c++
aqiu11111110 小时前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
辰烨chenye11 小时前
LeetCode Hot 100 题解 · 哈希篇
算法·leetcode·哈希算法
罗西的思考12 小时前
DreamZero 与 DreamDojo:世界模型与策略的分层协同综合分析与对比
人工智能·算法·机器学习
鱼子星_12 小时前
【C++】继承和多态(上)
c++·笔记
玖玥拾12 小时前
LeetCode 219 存在重复元素 II
算法·leetcode·哈希算法·散列表
知无不研13 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
郝学胜-神的一滴13 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生