39. Combination Sum
Given a set of candidate numbers (candidates
) (without duplicates) and a target number (target
), find all unique combinations in candidates
where the candidate numbers sums to target
.
The same repeated number may be chosen from candidates
unlimited number of times.
Note:
- All numbers (including
target
) will be positive integers. - The solution set must not contain duplicate combinations.
Example 1:
Input: candidates = [2,3,6,7],
target = 7
,
A solution set is:
[
[7],
[2,2,3]
]
Example 2:
Input: candidates = [2,3,5],
target = 8, A solution set is: [ [2,2,2,2], [2,3,3], [3,5] ]
和为目标数的组合,数可以重复使用
C++:
1 class Solution { 2 public: 3 vector<vector<int>> combinationSum(vector<int>& candidates, int target) { 4 vector<vector<int>> res ; 5 vector<int> temp ; 6 backtracking(candidates,res,temp,target,0) ; 7 return res ; 8 } 9 10 void backtracking(vector<int> candidates ,vector<vector<int>>& res,vector<int>& temp,int target , int start){ 11 if(target == 0){ 12 res.push_back(temp) ; 13 return ; 14 } 15 for(int i = start ; i < candidates.size() ; i++){ 16 if (candidates[i] <= target){ 17 temp.push_back(candidates[i]) ; 18 backtracking(candidates,res,temp,target-candidates[i],i) ; 19 temp.pop_back() ; 20 } 21 } 22 } 23 };