給出一組候選數字(c)和目標數字(t),找到c中所有的組合,使找出的數字和為t。c中的數字可以無限制重複被選取。思路例如,給出候選陣列[2,3,6,7]和目標數字7,所求的解為:
[7],
[2,2,3]
注意事項
所有的數字(包括目標數字)均為正整數。
元素組合(a1, a2, … , ak)必須是非降序(ie, a1 ≤ a2 ≤ … ≤ ak)。
解集不能包含重複的組合。
樣例給出候選陣列[2,3,6,7]和目標數字7
返回 [[7],[2,2,3]]
標籤回溯法 陣列
首先對候選數字排序、剔重,然後採取回溯和遞迴
code
class solution
vector> result;
vectortemp;
sort(candidates.begin(), candidates.end());
candidates.erase(unique(candidates.begin(), candidates.end()), candidates.end());
combinationsum(candidates, temp, 0, 0, target, result);
return result;
}void combinationsum(vector&candidates, vector&temp, int sum, int current, int target, vector> &result)
else if(sum > target)
for(int i=current; i}
};
LintCode 135 數字組合 回溯法
給出一組候選數字 c 和目標數字 t 找到c中所有的組合,使找出的數字和為t。c中的數字可以無限制重複被選取。例如,給出候選陣列 2,3,6,7 和目標數字7,所求的解為 7 2,2,3 注意事項 所有的數字 包括目標數字 均為正整數。元素組合 a1,a2,ak 必須是非降序 ie,a1 a2 ak...
兩次過 Lintcode 135 數字組合
給出乙個候選數字的set c 和目標數字 t 找到c中所有的組合,使找出的數字和為t。c中的數字可以無限制重複被選取。給出候選set 2,3,6,7 和目標數字7 返回 7 2,2,3 經典的組合問題 需要注意的是 需要去重,因為題目要求unique combinations 需要提前排序,因為題目...
LintCode 數字組合
給出一組候選數字 c 和目標數字 t 找到c中所有的組合,使找出的數字和為t。c中的數字可以無限制重複被選取。例如,給出候選陣列 2,3,6,7 和目標數字7,所求的解為 7 2,2,3 您在真實的面試中是否遇到過這個題?yes 樣例給出候選陣列 2,3,6,7 和目標數字7 返回 7 2,2,3 ...