「 每日一练,快乐水题 」1331. 数组序号转换

Posted 谁吃薄荷糖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「 每日一练,快乐水题 」1331. 数组序号转换相关的知识,希望对你有一定的参考价值。

文章目录


🔴力扣原题:

1331. 数组序号转换

🟠题目简述:

给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。

序号代表了一个元素有多大。序号编号的规则如下:

序号从 1 开始编号。
一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。
每个数字的序号都应该尽可能地小。

🟡解题思路:

  1. 哈希大法好;
  2. 利用哈希大法来去重与排序;
  3. 然后完成替换即可;
  4. over;

🟢C++代码:

class Solution 
public:
    vector<int> arrayRankTransform(vector<int>& arr) 
        vector<int> res(arr);
        sort(arr.begin(), arr.end());

        unordered_map<int, int> 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;
    
;

🔵结果展示:

以上是关于「 每日一练,快乐水题 」1331. 数组序号转换的主要内容,如果未能解决你的问题,请参考以下文章

「 每日一练,快乐水题 」1331. 数组序号转换

「 每日一练,快乐水题 」1608. 特殊数组的特征值

每日一题1331. 数组序号转换

「 每日一练,快乐水题 」217. 存在重复元素

「 每日一练,快乐水题 」905. 按奇偶排序数组

「 每日一练,快乐水题 」88. 合并两个有序数组