給定一個無重複元素的數組 candidates
和一個目標數 target
,找出 candidates
中全部可使數字和爲 target
的組合。javascript
candidates
中的數字能夠無限制重複被選取。java
說明:數組
全部數字(包括target
)都是正整數。
解集不能包含重複的組合。
示例 1:spa
輸入: candidates = [2,3,6,7], target = 7,
所求解集爲:
[[7],[2,2,3]]
示例 2:code
輸入: candidates = [2,3,5], target = 8,
所求解集爲:
[[2,2,2,2],[2,3,3],[3,5]]
答案參考:ip
/** * @param {number[]} candidates * @param {number} target * @return {number[][]} */ var combinationSum = function(candidates, target) { var item=[],path=[]; no_repetition(candidates,target,0,item,path); function no_repetition(candidates,target,it,item,path){ if(target<0) return; if(target==0){ path=path.slice() item.push(path); return } for(var i=it;i<candidates.length;i++){ path.push(candidates[i]); no_repetition(candidates,target-candidates[i],i,item,path) path.pop() } } return item };