【摘要】 描述
Given an array of integers arr, replace each element with its rank.
The rank represents how large the element is. The rank has the following rules:
Rank is an integer starting from…
描述
Given an array of integers arr, replace each element with its rank.
The rank represents how large the element is. The rank has the following rules:
- Rank is an integer starting from 1.
- The larger the element, the larger the rank. If two elements are equal, their rank must be the same.
- Rank should be as small as possible.
Example 1:
Input: arr = [40,10,20,30]
Output: [4,1,2,3]
Explanation: 40 is the largest element. 10 is the smallest. 20 is the second smallest. 30 is the third smallest.
Example 2:
Input: arr = [100,100,100]
Output: [1,1,1]
Explanation: Same elements share the same rank.
Example 3:
Input: arr = [37,12,28,9,100,56,80,5,12]
Output: [5,3,4,2,8,6,7,1,3]
Note:
0 <= arr.length <= 10^5
-10^9 <= arr[i] <= 10^9
解析
根据题意,就是找到 arr 中各个元素从小到大的顺序,从 1 开始计数,相等的数字序号得一样。思路简单,就是先对去重后的 arr 中的每个数字从小到大编号,最后遍历 arr ,将对应的元素的编号追加到列表中返回即可。
解答
class Solution(object): def arrayRankTransform(self, arr): """ :type arr: List[int] :rtype: List[int] """ tmp = list(set(arr)) tmp.sort() print(tmp) d = {c:i + 1 for i, c in enumerate(tmp)} return [d[c] for c in arr]
运行结果
Runtime: 320 ms, faster than 73.78% of Python online submissions for Rank Transform of an Array.
Memory Usage: 32.1 MB, less than 79.27% of Python online submissions for Rank Transform of an Array.
原题链接:https://leetcode.com/problems/rank-transform-of-an-array/
您的支持是我最大的动力
文章来源: blog.csdn.net,作者:王大丫丫,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/wang7075202/article/details/116195147
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END