合肥網(wǎng)站建設(shè)5k5seo軟件優(yōu)化
難度:中等
找出所有相加之和為 n 的 k 個數(shù)的組合,且滿足下列條件:
只使用數(shù)字1到9
每個數(shù)字 最多使用一次
返回 所有可能的有效組合的列表 。該列表不能包含相同的組合兩次,組合可以以任何順序返回。
示例 1:
輸入: k = 3, n = 7
輸出: [[1,2,4]]
解釋:
1 + 2 + 4 = 7
沒有其他符合的組合了。
示例 2:
輸入: k = 3, n = 9
輸出: [[1,2,6], [1,3,5], [2,3,4]]
解釋:
1 + 2 + 6 = 9
1 + 3 + 5 = 9
2 + 3 + 4 = 9
沒有其他符合的組合了。
示例 3:
輸入: k = 4, n = 1
輸出: []
解釋: 不存在有效的組合。
在[1,9]范圍內(nèi)使用4個不同的數(shù)字,我們可以得到的最小和是1+2+3+4 = 10,因為10 > 1,沒有有效的組合。
var combinationSum3 = function(k, n) {var result = []var path = []var backTracking = function(startIndex,sum){ //sum為收集的元素的和if(sum>n){ //剪枝條件1:sum>nreturn}if(path.length==k){if(sum==n){result.push(Array.from(path))//或result.push([...path]) 解構(gòu)賦值}return}for(let i=startIndex;i<=9-(k-path.length)+1;i++){ //剪枝條件2:i<9-(k-path.length)+1 path.push(i)backTracking(i+1,sum+i) //i+1保證下一個選擇的元素不會和已選擇的元素重復(fù)path.pop()}}backTracking(1,0) //初始值從1開始加,sum初始值為0return result
};