Skip to content

Commit 23bbaf0

Browse files
committed
https://leetcode.cn/problems/memoize-ii/
1 parent 2443052 commit 23bbaf0

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ Step 2. Add the dependency
4949

5050
<summary>展开查看</summary>
5151

52+
https://leetcode.cn/problems/memoize-ii/
53+
5254
https://leetcode.cn/problems/cache-with-time-limit/
5355

5456
https://leetcode.cn/problems/sleep

memoize-ii/index.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
type Fn = (...params: any) => any;
2+
3+
function memoize(fn: Fn): Fn {
4+
const cache = new Map<string, any>();
5+
let index = 0;
6+
const pointers = new Map<any, number>();
7+
8+
return function (...args: any[]) {
9+
const key = JSON.stringify(args.map((a: any) => {
10+
const pointer: number = pointers.get(a) ?? index++;
11+
pointers.set(a, pointer);
12+
return pointer;
13+
}));
14+
15+
const value = cache.get(key) ?? fn(...args);
16+
cache.set(key, value);
17+
18+
return value;
19+
};
20+
}
21+
22+
export type { Fn };
23+
export default memoize;

0 commit comments

Comments
 (0)