LeetCode第40题之Combination Sum II
来源:互联网 发布:北京棉花检验数据平台 编辑:程序博客网 时间:2024/05/19 00:12
这一题主要是在上一题的基础上解决重复解的问题。
C++代码:
#include <iostream>#include <algorithm>#include <vector>using namespace std;class Solution {private: //res保存满足题意的结果 vector<vector<int>> res; //保存当前的一种方案 vector<int> method;public: void fun(int n, int sum, vector<int> &candidates, int target, vector<int> &method, vector<vector<int>> &res) { if (target == sum) { res.push_back(method); return; } for (int i=n;i<candidates.size();++i) { //同一层次不能出现相同的元素 if (i>n && candidates[i] == candidates[i-1]) continue; //剪枝 if (candidates[i]+sum > target) return; method.push_back(candidates[i]); fun(i+1, sum+candidates[i], candidates, target, method, res); method.pop_back(); } } vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { sort(candidates.begin(), candidates.end()); fun(0, 0, candidates, target, method, res); return res; }};int main(){ Solution s; vector<int> canditates; canditates.push_back(10); canditates.push_back(1); canditates.push_back(2); canditates.push_back(7); canditates.push_back(6); canditates.push_back(1); canditates.push_back(5); vector<vector<int>> res = s.combinationSum2(canditates, 8); for (vector<vector<int>>::iterator ita=res.begin();ita!=res.end();++ita) { for (vector<int>::iterator itb=ita->begin();itb!=ita->end();++itb) { cout<<*itb<<'\t'; } cout<<endl; } cout<<endl; return 0;}
0 0
- LeetCode第40题之Combination Sum II
- leetcode之Combination Sum && Combination Sum II
- 【Leetcode】之 Combination Sum II
- leetcode之Combination Sum II
- Leetcode之combination-sum-ii
- LeetCode(40) Combination Sum II
- [leetcode 40] Combination Sum II
- leetcode || 40、Combination Sum II
- leetcode 40: Combination Sum II
- Leetcode #40 Combination Sum II
- LeetCode(40) Combination Sum II
- LeetCode-40 Combination Sum II
- LeetCode 40: Combination Sum II
- leetcode 40:Combination Sum II
- Leetcode 40 - Combination Sum II
- 【leetcode】【40】Combination Sum II
- LeetCode 40 - Combination Sum II
- LeetCode(40)-Combination Sum II
- 监听网络状态改变
- Java反射与内省的区别
- Android开发教程(八)RelativeLayout
- NYOJ-12 喷水装置(二)
- 实现复数类中的运算符重载
- LeetCode第40题之Combination Sum II
- OpenCv: 二维坐标的旋转方程
- int 和 Integer 的区别与作用
- Longest Valid Parentheses 最长的合法括号序列
- Ubuntu caffe安装python/caffe/_caffe.cpp:1:52: fatal error: Python.h: No such file or directory
- Oblivious transfer and Garbled circuits
- SQuirrel 连不上 Phoenix Hbase ---> 可能是因为zookeeper 集群中的一个zookeeper 启动有问题
- 第十六周上机实践项目1(3):阅读程序
- 在vs中建立web项目和web网站的区别