题目

给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。
序号代表了一个元素有多大。序号编号的规则如下:
序号从 1 开始编号。
一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。
每个数字的序号都应该尽可能地小。
示例 1:
输入:arr = [40,10,20,30]
输出:[4,1,2,3]
解释:40 是最大的元素。 10 是最小的元素。 20 是第二小的数字。 30 是第三小的数字。
示例 2:
输入:arr = [100,100,100]
输出:[1,1,1]
解释:所有元素有相同的序号。
示例 3:
输入:arr = [37,12,28,9,100,56,80,5,12]
输出:[5,3,4,2,8,6,7,1,3]
提示:
0 <= arr.length <= 10^5
-10^9 <= arr[i] <= 10 ^9
来源:力扣(LeetCode)

解题思路

  由于题目中给出的顺序是相等的元素拥有一致的地位,所以需要先对数组进行去重的操作,去重之后排完序就能得到一个元素对应准确的顺序。接下来将各个元素和它自己的顺序位号进行绑定,遍历原数组,访问到哪个元素就先得出哪个元素的顺序即可。

class Solution:def arrayRankTransform(self, arr: List[int]) -> List[int]:d=defaultdict()for i,j in enumerate(sorted(list(set(arr)))):d[j]=i+1return [d[i] for i in arr]

LeetCode简单题之数组序号转换相关推荐

  1. LeetCode简单题之数组形式的整数加法

    题目 对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组.例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]. 给定非负整数 X 的数组形式 A,返回整数 X+ ...

  2. LeetCode简单题之数组异或操作

    题目 给你两个整数,n 和 start . 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length . 请返回 nums 中所有元素 ...

  3. LeetCode简单题之数组中的字符串匹配

    题目 给你一个字符串数组 words ,数组中的每个字符串都可以看作是一个单词.请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词. 如果你可以删除 words[j] 最左侧和/或最 ...

  4. LeetCode简单题之数组的度

    题目 给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值. 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度. ...

  5. LeetCode简单题之数组元素积的符号

    题目 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 . 如果 x 是负数,返回 -1 . 如果 x 是等于 0 ,返回 0 . 给你一个整数数组 nu ...

  6. LeetCode简单题之数组中两元素的最大乘积

    题目 给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值. 请你计算并返回该式的最大值. 示例 1: 输入:nums = ...

  7. LeetCode简单题之数组中第 K 个独一无二的字符串

    题目 独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串. 给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字符串 .如果 少于 k 个独一无二的字符 ...

  8. LeetCode简单题之数组的相对排序

    题目 给你两个数组,arr1 和 arr2,arr2 中的元素各不相同,arr2 中的每个元素都出现在 arr1 中. 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相 ...

  9. LeetCode简单题之数组拆分 I

    题目 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), -, (an, bn) ,使得从 1 到 n 的 min(ai, bi) ...

最新文章

  1. Linux qgis 编译,QGIS简介与源代码编译
  2. HDU - 1051 Wooden Sticks
  3. Python学习笔记:常用内建模块3:struct
  4. boost::core模块实现np地址
  5. ARM的编程模式和7种模式
  6. php迭代器实例,PHP迭代器和生成器用法实例分析
  7. linux驱动编写(设备树)
  8. 别告诉我你懂Javascript
  9. g4600黑苹果efi_授人以鱼不如授人以渔,黑苹果EFI相关问题分析方法以及解决思路...
  10. nginx配置错误页面的2种方式
  11. 2022前端春招——CVTE笔试编程题
  12. PMP项目管理适用于哪些行业?
  13. 程序员编程的专业名言
  14. Java 以任意数量空格分割字符串方式
  15. 程序媛眼中的程序员,piupiu~
  16. 不得不说,时刻准备着
  17. 企业邮箱哪个好,教你正确的选择企业邮箱
  18. WebRTC源码-信令之六:SDP协议与协商流程
  19. win7系统64位系统怎么计算机配置,Win7系统电脑最低配置要求是什么?
  20. 通常的六种网络拓扑结构

热门文章

  1. aws lambda使用, aws无服务器部署应用。 aws ecr凭证获取和使用。
  2. 2022-2028年中国完全生物降解塑料产业发展动态及投资前景预测报告
  3. docker安装Mysql5.7以及远程登陆链接配置
  4. pytorch方法,Tensor及其基本操作_重点
  5. 【图论】有向无环图的拓扑排序
  6. LeetCode简单题之差的绝对值为 K 的数对数目
  7. LeetCode简单题之检查整数及其两倍数是否存在
  8. gst-crypto GStreamer插件
  9. GPU端到端目标检测YOLOV3全过程(下)
  10. 处理器解决物联网和人工智能的融合