給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。
candidates 中的數字可以無限制重複被選取。
說明:
所有數字(包括 target)都是正整數。
解集不能包含重複的組合。
示例 1:
輸入:candidates = [2,3,6,7], target = 7,
所求解集為:
[ [7],
[2,2,3]
]
解題思路:
我們來思考一下題目是需要使用什麼資料結構和演算法。首先要求總和,就是在所給陣列中進行選擇,可以形成一顆樹形結構,為樹形問題,故可以採取回溯法來解決。
按照刻意練習的思路思考:
1、遞迴樹和狀態變數。狀態變數為當前值下標、當前和、新陣列。
2、遞迴出口:sum === target push
3、選擇列表 for迴圈當前下標後的陣列 push進temp中,遞迴下一層
4、剪枝:sum>target return
5、撤銷 for中撤銷 pop
var
combinationsum
=function
(candidates, target)
if(sum > target)
for(
let i = index; i < len; i++)}
dfs(0,
0,);
return res;};
console.
log(
combinationsum([
2,3,
6,7]
,7))
;
LeetCode 39 組合總和
給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 示例 2 ...
leetcode39 組合總和
參考 class solution if next num.size target num next 0 邊界條件 return 對於每個元素,有兩種處理方式,選當前元素或者不選當前元素 psol.push back num next 選當前元素 search num,next,psol,targe...
LeetCode39組合總和
給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。示例 1 輸入 candid...