leetcode 39 組合總和

2021-10-04 18:29:51 字數 1097 閱讀 7906

給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。

candidates 中的數字可以無限制重複被選取。

說明:所有數字(包括 target)都是正整數。

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

示例 1:

輸入: candidates = [2,3,6,7], target = 7,

所求解集為:

[[7],

[2,2,3]

]示例 2:

輸入: candidates = [2,3,5], target = 8,

所求解集為:

[[2,2,2,2],

[2,3,3],

[3,5]

]解題思路:

這道題目的就是dfs+剪枝,稍微有點技巧的地方在於剪枝, 比如[2,3] target = 7

2                           3

/   \                       /   \

2     3                     2     3

/ \   / \                   / \   / \

2   3 2   3                 2   3  2  3

/ \ 

2   3

如果不剪枝,那麼遍歷到葉子節點的結果如上,會產生3個有效的vector,[2,2,3], [2,3,2], [3,2,2]

我們只需要其中的[2,2,3]即可,如何只要[2,2,3]?

只要保證遍歷的葉子節點在candidates中的idx一定 >= 之前的葉子節點在candidates中的idx即可

class solution 

if(sum > target)

return ;

if(index >= candidates.size())

return ;

for(int i=index;i> combinationsum(vector& candidates, int target)

};

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...