You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
function test(n, k, start=1) {
const result = [];
for (let index = start; index <= n; index++) {
if (k > 1) {
const a = test(n, k - 1, index + 1);
if (a && a.length) {
a.forEach(item => {
result.push([index].concat(item));
});
}
} else if (k === 1) {
result.push([index]);
}
}
return result;
}
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
示例:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combinations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
定义一个 helper 函数,递归的时候接受本次处理的
start
起始位置,和上一次已经取了字符后得到的prev
数组。继续进一步的循环递归,增加start
和拼接prev
即可。当
prev
的长度等于k
时,条件满足,把当前的prev
存入结果数组中。剪枝
在循环中,要考虑当前已经凑成的数组长度和剩下的数字所能凑成的最大长度,对于不可能凑成的情况直接
continue
。The text was updated successfully, but these errors were encountered: