給定乙個陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。
candidates 中的每個數字在每個組合中只能使用一次。
說明:
示例 1:
輸入: candidates = [10,1,2,7,6,1,5], target = 8,
所求解集為:
[ [1, 7],
[1, 2, 5],
[2, 6],
[1, 1, 6]
]
解題思路:
分析本題所採用的資料結構與演算法,可知屬於樹形問題,採用回溯法。
按照刻意練習的思路思考:
1、遞迴樹和狀態變數。狀態變數:當期值下標、總和、新陣列
2、遞迴出口:sum === target push
3、選擇列表: for迴圈當前下標+1後的元素
4、剪枝:sum>target return
5、撤銷操作:for迴圈中pop
var
combinationsum2
=function
(candidates, target)
if(sum > target)
for(
let i = start; i < len; i++)}
dfs(0,
0,);
return res;};
console.
log(
combinationsum2([
10,1,
2,7,
6,1,
5],8
));
LeetCode40 組合總和2
給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。說明 所有數字 包括目標數 都是正整數。解集不能包含重複的組合。示例 1 輸入 candidates 1...
leetcode 40 組合總和
給定乙個陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的每個數字在每個組合中只能使用一次。說明 示例 1 輸入 candidates 10,1,2,7,6,1,5 target 8,所求解集為 1,7 1,2,...
leetcode40 組合總和 II
給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。說明 所有數字 包括目標數 都是正整數。解集不能包含重複的組合。示例 1 輸入 candidates 1...