### LeetCode - Arrays - 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.```
```class Solution {     public int[] arrayRankTransform(int[] arr) {         int[] temp = Arrays.copyOf(arr, arr.length);         Arrays.sort(temp);         Map<Integer,Integer> rankMap = new HashMap<Integer,Integer>();         int rank = 1;         for(int i:temp){             if(!rankMap.containsKey(i)) rankMap.put(i,rank++);         }         int[] result = new int[arr.length];         for(int i=0;i<arr.length;i++){             result[i] = rankMap.get(arr[i]);         }         return result;     } }```