LeetCode OJ-- Combination Sum II **
2024-09-29 04:29:48
https://oj.leetcode.com/problems/combination-sum-ii/
一列数,每个数只能用一次或者不用,给出和为target的组合。
递归写的深搜,使用了编程技巧,引用。因为递归在本意上是不需要这个引用的,因为它额外的改了调用参数,所以,又有相应的 pop_back()
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std; class Solution {
public:
vector<vector<int> > combinationSum2(vector<int> &num, int target){
vector<vector<int> > ans;
if(num.size()==)
return ans; sort(num.begin(),num.end()); if(num[]>target)
return ans; //remove the elements greater than target
int len = num.size();
while(len>= && num[len-] > target)
len--;
num.resize(len); vector<int> ansPiece;
combinationSum(num,ans,target,,ansPiece); //remove duplicates
sort(ans.begin(),ans.end());
ans.erase(unique(ans.begin(),ans.end()),ans.end()); return ans;
}
void combinationSum(vector<int> & num,vector<vector<int> > &ans,int target,int pivot,vector<int> &ansPiece)
{
if(target == )
{
ans.push_back(ansPiece);
return;
}
if( target < ||pivot == num.size())
return; combinationSum(num,ans,target,pivot+,ansPiece); ansPiece.push_back(num[pivot]);
combinationSum(num,ans,target - num[pivot],pivot+,ansPiece);
ansPiece.pop_back();
}
};
int main()
{
vector<int> num;
num.push_back();
num.push_back();
num.push_back();
num.push_back();
num.push_back();
num.push_back();
num.push_back(); class Solution mys;
mys.combinationSum2(num,);
}
最新文章
- vim+vundle配置
- ASP.NET MVC使用jQuery实现Autocomplete
- 《锋利的jQruery》读书笔记
- Fidder--实现手机的抓包
- OC1_汉字拼音转换 练习
- PERCONA-TOOLKIT : pt-ioprofile分析IO情况
- poj1740 A New Stone Game
- AsyncTask源码笔记
- C# 霍尼韦尔扫码枪扫码打印
- 关于Struts2中 Action 配置method的解读
- RTP实时传输协议
- django部署admin后台static文件丢失问题解决
- 03-树3 Tree Traversals Again(25 分)
- nginx+tomcat抵御慢速连接攻击
- iOS 关于 设计模式 与网友讨论实录
- mysql导入报错【The MySQL server is running with the --event-scheduler=DISABLED】
- mysql 存储过程和游标
- SSH框架——(二)四层结构:DAO,Service,Controller,View层
- 决策树&;随机森林
- Softmax回归 softMax回归与logistic回归的关系