Combination Sum
来源:互联网 发布:淘宝创建时间 编辑:程序博客网 时间:2024/04/30 22:44
DFS: almost the same, except the change of depth
I:
class Solution {public: void dfs(vector<int> &num, int target, int start, vector<int> &cur, vector<vector<int> > &res) { if (start>num.size()-1) return; for (int i=start; i<num.size(); i++) { int next_target=target-num[i]; if (next_target==0) { cur.push_back(num[i]); res.push_back(cur); cur.pop_back(); return; } if (next_target>0) { cur.push_back(num[i]); dfs(num, next_target,i, cur, res); cur.pop_back(); } } } vector<vector<int> > combinationSum(vector<int> &candidates, int target) { // Note: The Solution object is instantiated only once and is reused by each test case. vector<vector<int> > res; if (candidates.size()==0) return res; vector<int> cur; sort(candidates.begin(), candidates.end()); dfs(candidates, target, 0, cur, res); return res; }};
II:
Terminal condition: depth==num. size ()
Depth in next round = i+1 (! = depth + 1)
class Solution {public: void dfs(vector<int> &num, int target, int start, vector<int> &cur, vector<vector<int> > &res) { if (start>num.size()-1) return; int temp=-1; for (int i=start; i<num.size(); i++) { if (temp==num[i]) continue; temp=num[i]; int next_target=target-temp; if (next_target==0) { cur.push_back(temp); res.push_back(cur); cur.pop_back(); return; } if (next_target>0) { cur.push_back(temp); dfs(num, next_target,i+1, cur, res); cur.pop_back(); } } } vector<vector<int> > combinationSum2(vector<int> &num, int target) { // Note: The Solution object is instantiated only once and is reused by each test case. vector<vector<int> > res; if (num.size()==0) return res; vector<int> cur; sort(num.begin(), num.end()); dfs(num, target, 0, cur, res); return res; }};
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Java is Pass-by-Value, Dammit!
- java 关于操作oracle的clob类型
- 有关 C 指针的个人另类概念(1)
- C#实现限制软件的使用次数
- 白首方恨读书迟
- Combination Sum
- 线程并发库<二>_线程池
- JavaScript<四>_DOM
- Android基站定位
- ORA-01791:不是 SELECTed 表达式
- g77 arm 编译器
- sizeof运算符的学习笔记
- 多列分区
- 第19章 导航和布局设计模式