Skip to content

Commit 1659eec

Browse files
committed
https://leetcode.cn/problems/rank-transform-of-an-array
1 parent 4b5fbc1 commit 1659eec

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -910,6 +910,8 @@ https://leetcode.cn/problems/fraction-addition-and-subtraction/
910910

911911
https://leetcode.cn/problems/triangle
912912

913+
https://leetcode.cn/problems/rank-transform-of-an-array
914+
913915
#### 安装教程
914916

915917
1. 安装`deno`

rank-transform-of-an-array/index.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
function arrayRankTransform(arr: number[]): number[] {
2+
const clone = Array.from(arr);
3+
clone.sort((a, b) => a - b);
4+
5+
let idx = 0;
6+
const map = new Map<number, number>();
7+
for (const i of clone) {
8+
if (!map.has(i)) map.set(i, ++idx);
9+
}
10+
const ans = Array.from(arr).map((_, i) => map.get(arr[i]) ?? 0);
11+
12+
return ans;
13+
}
14+
export default arrayRankTransform;

rank-transform-of-an-array/test.ts

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { assertEquals } from "../deps.ts";
2+
import arrayRankTransform from "./index.ts";
3+
4+
Deno.test("rank-transform-of-an-array", () => {
5+
assertEquals(arrayRankTransform([100, 100, 100]), [1, 1, 1]);
6+
assertEquals(
7+
arrayRankTransform([37, 12, 28, 9, 100, 56, 80, 5, 12]),
8+
[5, 3, 4, 2, 8, 6, 7, 1, 3],
9+
);
10+
assertEquals(arrayRankTransform([40, 10, 20, 30]), [4, 1, 2, 3]);
11+
assertEquals(arrayRankTransform([1, 2, 3, 4]), [1, 2, 3, 4]);
12+
assertEquals(arrayRankTransform([1, 3, 5, 7]), [1, 2, 3, 4]);
13+
assertEquals(arrayRankTransform([1, 5, 10, 100]), [1, 2, 3, 4]);
14+
15+
assertEquals(arrayRankTransform([1, 1, 1, 1]), [1, 1, 1, 1]);
16+
assertEquals(
17+
arrayRankTransform([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
18+
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
19+
);
20+
21+
assertEquals(
22+
arrayRankTransform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
23+
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
24+
);
25+
26+
assertEquals(
27+
arrayRankTransform([10, 9, 8, 7, 6, 5, 4, 3, 2, 1]),
28+
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
29+
);
30+
assertEquals(
31+
arrayRankTransform([10, 10, 10, 10, 10, 10, 10, 10, 10, 10]),
32+
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
33+
);
34+
assertEquals(
35+
arrayRankTransform([
36+
1,
37+
2,
38+
3,
39+
4,
40+
5,
41+
6,
42+
7,
43+
8,
44+
9,
45+
10,
46+
11,
47+
12,
48+
13,
49+
14,
50+
15,
51+
16,
52+
17,
53+
18,
54+
19,
55+
20,
56+
]),
57+
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
58+
);
59+
});

0 commit comments

Comments
 (0)