记忆函数 II 题解
题目链接2630. 记忆函数 II - 力扣LeetCode思路题目所提到 相等才给出缓存的结果那么我们用 hash 的想法给每个参数记录下来 对于简单数据类型 —— 值相等 类型相等即可 对于复杂数据类型 —— 需要是指向同一个对象这里采取的 hash 是拿 map 的 size 进行记录到 idPool 这个map里面表示参数是否已经记录过了最后 我们给 传递进来的参数 hash 在 代码里面也就是 getId 一下拼接对应的 id 成一个 字符串即可题解/** * param {Function} fn * return {Function} */ function memoize(fn) { let cache new Map() let idPool new Map() function getId(obj) { if (idPool.has(obj)) { return idPool.get(obj) } let id idPool.size idPool.set(obj, id) return id } return function () { const key Object.values(arguments).map(getId).join(-) if (cache.has(key)) { return cache.get(key) } let value fn.apply(this, Object.values(arguments)) cache.set(key, value) return value } } /** * 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 */
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2422196.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!