我是靠谱客的博主 机灵盼望,最近开发中收集的这篇文章主要介绍「 每日一练,快乐水题 」1331. 数组序号转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • ????力扣原题:
    • ????题目简述:
    • ????解题思路:
    • ????C++代码:
    • ????结果展示:


????力扣原题:

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. 数组序号转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部