78. Subsets
2016-03-17 16:31
393 查看
Given a set of distinct integers, nums, 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 nums =
解法:
一个集合大小为n,则集合的子集个数为 2^n
对集合进行编号,则(0,1,2,3,....2^n-1)
考察有2个元素的集合{1,2},则有4个子集,{[],[1],[2],[1,2]}
其编号可用00,01,10,11表示,
则可以看出,子集编号二进制位中,相应为是1的就在该子集中,
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
For example,
If nums =
[1,2,3], a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
解法:
一个集合大小为n,则集合的子集个数为 2^n
对集合进行编号,则(0,1,2,3,....2^n-1)
考察有2个元素的集合{1,2},则有4个子集,{[],[1],[2],[1,2]}
其编号可用00,01,10,11表示,
则可以看出,子集编号二进制位中,相应为是1的就在该子集中,
vector<vector<int>> subsets(vector<int>& nums) { int size=nums.size(); vector<vector<int>> res; if(size==0) return res; long total=1<<size; sort(nums.begin(),nums.end()); res.resize(total); for(int i=0;i<size;++i){ long mask=1<<i; for(long j=0;j<total;++j){ if(mask&j) res[j].push_back(nums[i]); } } return res; }
相关文章推荐
- 3357: [Usaco2004]等差数列|DP
- mysql ERROR 1045 (28000): Access denied for user解决方法 (转)
- android文件上传到服务器
- 第三次作业(1) Visual Studio程序安装过程和练习过程
- 【Java】数组属性的例子
- kettle 邮件 附件 smtp
- UNICODE与ANSI的区别【转】
- spring事务管理几种方式(转)
- 执行ubuntu脚本出现 Syntax error: "(" unexpected错误
- Maven-相关命令
- 对图片的压缩处理
- myeclipse封装webservice接口
- android开发 多线程
- linux网络基础--学习笔记
- 工厂模式
- 给想进入餐饮业新手一些建议
- ActionMQ中文指南
- angularjs,ng-include引入html代码片段
- 【图像处理】图形图像中术语
- linux ssh