LeetCode - 2623.记忆函数

学习 · 2023-10-17 · 49 人浏览

这一题我在看Vue的工具函数中见识到过,本质闭包和高阶函数的应用,但是理解起来还是要下点功夫~

/** 
 * let callCount = 0;
 * const memoizedFn = memoize(function (a, b) {
 *     callCount += 1;
 *   return a + b;
 * })
 * memoizedFn(2, 3) // 5
 * memoizedFn(2, 3) // 5
 * console.log(callCount) // 1 
 */

要求

  1. 对于相同的入参多次调用,返回的结果永远不变,它返回的是已经缓存的结果

题解

function memoize(fn) {
  let cache = {};
  return function (...args) {
    if (cache[args]) return cache[args];
    return (cache[args] = fn(...args));
  };
}
这里get一个知识点,对象的Key值会自动转字符类型,所以不用特地去转换key的类型和字符拼接
记忆函数
Theme Jasmine by Kent Liao