-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1331-rank-transform-array.dart
More file actions
42 lines (32 loc) · 1.04 KB
/
1331-rank-transform-array.dart
File metadata and controls
42 lines (32 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Solution {
List<int> arrayRankTransform(List<int> arr) {
if (arr.isEmpty) return [];
// copy
List<int> sortedArr = List.from(arr)..sort();
//store
Map<int, int> rankMap = {};
int rank = 1;
for (int num in sortedArr) {
if (!rankMap.containsKey(num)) {
rankMap[num] = rank;
rank++;
}
}
// Transform
return arr.map((num) => rankMap[num]!).toList();
}
}
void main() {
Solution solution = Solution();
// Test cases
List<int> arr1 = [40, 10, 20, 30];
print(solution.arrayRankTransform(arr1)); // Output: [4, 1, 2, 3]
List<int> arr2 = [100, 100, 100];
print(solution.arrayRankTransform(arr2)); // Output: [1, 1, 1]
List<int> arr3 = [37, 12, 28, 9, 100, 56, 80, 5, 12];
print(solution.arrayRankTransform(arr3)); // Output: [5, 3, 4, 2, 8, 6, 7, 1, 3]
List<int> arr4 = [];
print(solution.arrayRankTransform(arr4)); // Output: []
List<int> arr5 = [-10, -20, -30, -20, -10];
print(solution.arrayRankTransform(arr5)); // Output: [3, 2, 1, 2, 3]
}