【发布时间】:2021-03-28 07:36:00
【问题描述】:
我正在尝试解决这个问题:https://leetcode.com/problems/divisor-game/
我的递归本身似乎可以工作,但是当输入足够大时出现超时错误 ~ 70。我尝试进行记忆以缓存以前的解决方案,但由于某种原因它似乎不起作用。我不知道为什么。
/**
* @param {number} n
* @return {boolean}
*/
var divisorGame = function(n) {
return helper(n);
};
const helper = (n, cache = {}) => {
if(n === 1) return false;
if(n in cache) return cache[n];
for(let i = 0; i < n; i++) {
if(n % i === 0) {
if(helper(n - 1) === false) return cache[n] = true;
}
}
return cache[n] = false;
}
【问题讨论】:
-
@ggorlen 哎呀。我已将其更正为 if(n in cache) return cache[n];但是我仍然在相同类型的输入中遇到超时错误
-
@ggorlen 好的编辑
标签: javascript algorithm recursion optimization dynamic-programming