【发布时间】:2016-07-29 07:21:42
【问题描述】:
leetcode问题是:
找出所有可能的 k 个数字加起来等于数字 n 的组合,前提是只能使用 1 到 9 之间的数字,并且每个组合都应该是一组唯一的数字。
示例 1:
输入:k = 3,n = 7
输出:
[[1,2,4]]
示例 2:
输入:k = 3,n = 9
输出:
[[1,2,6], [1,3,5], [2,3,4]]
我在 Javascript 中找到了解决方案
var combinationSum3 = function(k, n) {
var result = [];
search(1, [], k, n);
return result;
function search(from, prefix, k, n) {
if (k === 0 && n === 0) return result.push(prefix);
if (from > 9) return;
prefix.push(from);
search(from + 1, prefix.slice(0), k - 1, n - from);
prefix.pop();
search(from + 1, prefix.slice(0), k, n);
}
};
我想 slice(0) 方法返回原始数组的副本,所以我尝试用前缀替换 prefix.slice(0)。但是,我得到的结果是 [ [ ] ]。这里有什么问题?
【问题讨论】:
-
@AnotherGeek 我听不懂你的话。在 Chrome 控制台下,我得到的结果是 [ [ ] ]。尼娜的回答很好解释。
标签: javascript arrays algorithm slice