跳到主要内容

2630.记忆函数II

链接:2630.记忆函数II
难度:Hard
标签:
简介:请你编写一个函数,它接收一个函数参数 fn,并返回该函数的 记忆化 后的结果。

题解 1 - typescript

  • 编辑时间:2023-04-23
  • 执行用时:372ms
  • 内存消耗:102MB
  • 编程语言:typescript
  • 解法介绍:trie。
type Fn = (...params: any) => any;
const EmptyResult = Symbol('EmptyResult');
class Trie {
children = new Map<any, Trie>();
result: any = EmptyResult;
constructor(public val: any) {}
}
function memoize(fn: Fn): Fn {
const root = new Trie(null);
return function (...args: any[]) {
let node = root;
for (const arg of args) {
let next = node.children.get(arg);
if (!next) node.children.set(arg, (next = new Trie(arg)));
node = next;
}
if (node.result !== EmptyResult) return node.result;
return (node.result = fn(...args));
};
}