Given a set of distinct integers, S, return all possible subsets.

Note:

  • Elements in a subset must be in non-descending order.
  • The solution set must not contain duplicate subsets.

For example,
If S = [1,2,3], a solution is:

[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
] 该题和Combinations很类似,只不过是k需要从0到size中取值。
class Solution {
private:
vector<vector<int>> res;
vector<int> s;
public:
void tra(int k,int start,int dep,vector<int> temp)
{
if(dep==k){
res.push_back(temp);
return;
}
for(int i=start;i<s.size();++i){
temp.push_back(s[i]);
tra(k,i+,dep+,temp);//是i+1,而不是start+1
temp.erase(temp.end()-);
}
}
vector<vector<int>> subsets(vector<int> &S) {
s=S;
sort(s.begin(),s.end());
vector<int> temp;
for(int k=;k<=s.size();++k){
tra(k,,,temp);
}
return res;
}
};

我的分析图:

 

Subsets 2

Given a collection of integers that might contain duplicates, S, return all possible subsets.


Note:


  • Elements in a subset must be in non-descending order.
  • The solution set must not contain duplicate subsets.

For example,
If S = [1,2,2], a solution is:


[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
 
class Solution {
private:
vector<vector<int>> res;
vector<int> s;
public:
void tra(int k,int start,int dep,vector<int> temp)
{
if(dep==k){
for (int i=;i<res.size();++i)
{
if(res[i]==temp) return;
}
res.push_back(temp);
return;
}
for(int i=start;i<s.size();++i){
temp.push_back(s[i]);
tra(k,i+,dep+,temp);
temp.erase(temp.end()-);
}
}
vector<vector<int>> subsetsWithDup(vector<int> &S) {
s=S;
sort(s.begin(),s.end());
vector<int> temp;
res.push_back(temp);
for(int k=;k<=s.size();++k){
tra(k,,,temp);
}
return res;
}
};

 

最新文章

  1. Hadoop中wordcount程序
  2. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--瘦身计划
  3. WCF小白初试 错误之一:“有零个应用程序终结点”的解决办法
  4. Imread函数不好使的替用方法
  5. Linux系统启动流程(2)
  6. [渣译文] SignalR 2.0 系列:SignalR的高频实时通讯
  7. shell脚本获取随机数random
  8. lua lua解读
  9. (转)spring aop(下)
  10. 冲刺No.4
  11. 【JavaScript】封装实用方法【持续积累】
  12. 深入学习vue指令,自定义指令解决开发痛点
  13. content_type
  14. Ubuntu14设置静态IP的地方
  15. 通过NAT转发实现私网对外发布信息
  16. 缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)分析
  17. Linux 防火墙iptables命令详解
  18. New Concept English Two 26 70
  19. 第195天:js---函数对象详解(call、apply)
  20. 概率dp - UVA 11021 Tribles

热门文章

  1. 把json数据转化成对象
  2. xmind8 Mac破解版(思维导图) 附序列号
  3. 分享div、text、Box Shadow(阴影)演示及代码的页面
  4. cat - 连接文件并在标准输出上输出
  5. 最后一个非零数字(POJ 1604、POJ 1150、POJ 3406)
  6. java组件不存在解决方案:右侧Maven Projects展开后左上角第一个刷新按钮 刷新后就会从新加载所有java的依赖项了
  7. VC++线程函数内怎么调用外部函数
  8. thinkphp5中extend的使用?
  9. 操作iframe的方法
  10. BZOJ 3326 [SCOI2013]数数 (数位DP)