# [LeetCode] 1331. Rank Transform of an Array

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]```

Constraints:

• `0 <= arr.length <= 105`
• `-109 <= arr[i] <= 109`

Java实现

``` 1 class Solution {
2     public int[] arrayRankTransform(int[] arr) {
3         int[] sorted = arr.clone();
4         Arrays.sort(sorted);
5         HashMap<Integer, Integer> map = new HashMap<>();
6         for (int num : sorted) {
7             map.putIfAbsent(num, map.size() + 1);
8         }
9         for (int i = 0; i < arr.length; i++) {
10             arr[i] = map.get(arr[i]);
11         }
12         return arr;
13     }
14 }```

LeetCode 题目总结

[LeetCode] 1331. Rank Transform of an Array

(0)
(0)