解題思路
也是經典的題型。
如果要確保 combination 是唯一的,用 start 標記起始點可以避免重複拿取 element,以至於產生相同的組合。
程式碼
class Solution {
public:
void helper(vector<int>& candidates, vector<vector<int>>& ans, vector<int> result, int target, int start)
{
if(target == 0)
ans.push_back(result);
if(target < 0)
return ;
for(int i=start; i<candidates.size(); i++)
{
vector<int> result_new = result;
result_new.push_back(candidates[i]);
helper(candidates, ans, result_new, target - candidates[i], i);
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
vector<vector<int>> ans;
vector<int> result;
helper(candidates, ans, result, target, 0);
return ans;
}
};
沒有留言:
張貼留言