找出所有相加之和是 n 的 k 个数的组合。组合中只含有 1~9的正整数,且保证每种组合中不含有相同的数字。
保证一定有解。结果按字典序升序输出。
主要实现还是回溯迭代方法。主要考虑回溯点的位置,确定界点 /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param k int整型 * @param n int整型 * @return int整型二维数组 */ function combination( k , n ) { // write code here dfcData(1, k, n, []) return resultArr // console.log(JSON.stringify(resultArr)) } var resultArr = [] function dfcData(i, k, n, arr) { if(k < 0 || n < 0) { return; } if(n === 0 && k ===0) { const arrtemp = [...arr] resultArr.push(arrtemp) return; } for(let a = i; a <= 9; a++) { arr.push(a) dfcData(a+1, k-1, n-a, arr) arr.pop() } } module.exports = { combination : combination };