lintcode-18-带重复元素的子集
2024-10-21 11:58:21
带重复元素的子集
给定一个可能具有重复数字的列表,返回其所有可能的子集
注意事项
- 子集中的每个元素都是非降序的
- 两个子集间的顺序是无关紧要的
- 解集中不能包含重复子集
样例
如果 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();
}
}
};
最新文章
- mysql 外键 级联
- 流量三角形:并非简单的";统计学";
- VB调用存储过程 - CreateParameter 方法
- Symfony2模版引擎使用说明手册
- 032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
- touch事件学习
- slua 中使用 lua5.3
- cmake简易教程
- window 配置 sendmail
- 使用downloadmanager调用系统的下载
- spring06Aop
- 【翻译】MVC Music Store 教程-概述(三)
- 聊聊数据库(MySql)连接吧,你真的清楚吗?
- MySQL注射的过滤绕过技巧
- mysql变量使用总结(转)
- java 虚拟机--新生代与老年代GC [转]
- 《App架构实践指南》
- ADO.Net操作数据库的方式
- C++ const用法 尽可能使用const
- Andrew Ng在coursera上的ML视频 知识点笔记(2)