LeetCode Two Sum

Two Sum

两数之和

参考自书籍<<JavaScript语言精粹>>第四章最后一节:记忆

函数可以将先前操作的结果记录在某个 对象 里,从而避免无谓的重复计算.这种优化被称为记忆.

demo:

// 记忆体
/**
 * 记忆体
 * @param {Array} memo 记忆数组
 * @param {Function} formula 方法体
 */
let memoizer = function (memo, formula) {
	let recur = function (n) {
		let result = memo[n];
		if (typeof result !== 'number') {
			result = formula(recur, n);
			memo[n] = result;
		}
		return result;	
	};
	return recur;
};

use:

/**
 * 斐波那契数列
 * [0, 1, 1, 2, 3, 5, 8, ......]
 */
let fibonacci = memoizer([0, 1], function (recur, n) {
	return recur(n - 1) + recur(n - 2);
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值