带重复元素的子集

给定一个可能具有重复数字的列表,返回其所有可能的子集

注意事项

  • 子集中的每个元素都是非降序的
  • 两个子集间的顺序是无关紧要的
  • 解集中不能包含重复子集

样例

如果 S = [1,2,2],一个可能的答案为:

[

[2],

[1],

[1,2,2],

[2,2],

[1,2],

[]

]

挑战

你可以同时用递归与非递归的方式解决么?

标签

递归

code

class Solution {
public:
/**
* @param S: A set of numbers.
* @return: A list of lists. All valid subsets.
*/
vector<vector<int> > subsetsWithDup(const vector<int> &S) {
// write your code here
vector<vector<int> > result;
vector<int> nums(S);
int size = nums.size(); if(size == 0) {
result.push_back(vector<int> ());
return result;
} sort(nums.begin(),nums.end()); vector<int> temp;
subset(result, nums, temp, 0, size); return result;
} void subset(vector<vector<int> > &result, vector<int> nums, vector<int> temp, int begin, int end) {
result.push_back(temp); for(int i=begin; i<end; i++) {
if (i!=begin && nums[i] == nums[i-1])
continue;
temp.push_back(nums[i]);
subset(result, nums, temp, i+1, end);
temp.pop_back();
}
}
};

最新文章

  1. mysql 外键 级联
  2. 流量三角形:并非简单的&quot;统计学&quot;
  3. VB调用存储过程 - CreateParameter 方法
  4. Symfony2模版引擎使用说明手册
  5. 032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
  6. touch事件学习
  7. slua 中使用 lua5.3
  8. cmake简易教程
  9. window 配置 sendmail
  10. 使用downloadmanager调用系统的下载
  11. spring06Aop
  12. 【翻译】MVC Music Store 教程-概述(三)
  13. 聊聊数据库(MySql)连接吧,你真的清楚吗?
  14. MySQL注射的过滤绕过技巧
  15. mysql变量使用总结(转)
  16. java 虚拟机--新生代与老年代GC [转]
  17. 《App架构实践指南》
  18. ADO.Net操作数据库的方式
  19. C++ const用法 尽可能使用const
  20. Andrew Ng在coursera上的ML视频 知识点笔记(2)

热门文章

  1. css中三种隐藏方式
  2. angular-sanitize 插件的使用,获取带html标签的内容
  3. 【JavaWeb】从零实现用户登录
  4. 大数据学习--day02(标识符、变量、数据类型、类型转换、进制转换、原码反码补码)
  5. web頁面優化以及SEO
  6. rtsp over tcp并设置多个options
  7. C语言实例解析精粹学习笔记——18
  8. mySQL安装的时候一直卡在starting server这里解决办法
  9. 苏州Uber优步司机奖励政策(3月28日~3月30日)
  10. CF 1027 F. Session in BSU