40 組合總和 II

2022-10-11 04:09:11 字數 1015 閱讀 2816

40. 組合總和 ii

給定乙個候選人編號的集合candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。

candidates中的每個數字在每個組合中只能使用一次

注意:解集不能包含重複的組合。

示例 1:

輸入: candidates = [10,1,2,7,6,1,5], target = 8,

輸出:[

[1,1,6],

[1,2,5],

[1,7],

[2,6]

]

示例 2:

輸入: candidates = [2,5,2,1,2], target = 5,

輸出:[

[1,2,2],

[5]]

思路:​ 帶有剪枝的回溯演算法具體可看別人的這篇文章

回溯演算法秒殺所有排列/組合/子集問題 :: labuladong的演算法小抄

class solution 

void backtrack(vector& candidates,int index, int target)

if(target<0)return;

for(int i=index;iindex && candidates[i] == candidates[i - 1])

//做選擇

res.push_back(candidates[i]);

backtrack(candidates,i+1,target-candidates[i]);

//撤銷選擇

res.pop_back();}}

};

40 組合總和 II

給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。說明 所有數字 包括目標數 都是正整數。解集不能包含重複的組合。示例 1 輸入 candidates 1...

40 組合總和 II

給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。說明 所有數字 包括目標數 都是正整數。解集不能包含重複的組合。示例 1 輸入 candidates 1...

40 組合總和 II

給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。說明 所有數字 包括目標數 都是正整數。解集不能包含重複的組合。示例 1 輸入 candidates 1...