給定一個無重複元素的數組 candidates
和一個目標數 target
,找出 candidates
中全部可使數字和爲target
的組合。javascript
candidates
中的數字能夠無限制重複被選取。java
說明:數組
全部數字(包括
target
)都是正整數。 解集不能包含重複的組合。spa
示例 1:code
輸入: candidates = [2,3,6,7], target = 7, 所求解集爲: [[7],[2,2,3]]cdn
示例 2:ip
輸入: candidates = [2,3,5], target = 8, 所求解集爲: [[2,2,2,2],[2,3,3],[3,5]]get
答案參考:it
/** * @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
};
複製代碼