【一天一道LeetCode】#78. Subsets
2016-06-02 17:04
435 查看
一天一道LeetCode
(一)题目
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 = [1,2,3], a solution is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
(二)解题
本题大意:给定一个数集,计算得出它的所有子集需要注意一下几点:
1、子集不能重复
2、子集里面的数需要按照非降序排列
解题思路:考虑到用位操作来模拟所有的排列组合。以数集大小等于3为例:
3位二进制的全排列为:000,001,010,011,100,101,111
利用这个全排列,为1就选入子集,为0就不选。很容易就得到了所有子集
class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { long n = pow(2,nums.size());//按位数得到全排列最大值 sort(nums.begin(),nums.end());//由于子集的数需要按非降序排列,故先将集合排序 vector<vector<int>> ret; for(long i = 0 ; i < n ; i++) { vector<int> tempset; for(int j = 0 ; j < nums.size() ;j++) { if((i>>j)&1==1)//判断每一位是否为1 { tempset.push_back(nums[j]); } } ret.push_back(tempset); } return ret; } };
相关文章推荐
- Ubuntu下单网卡多IP地址的配置
- 20 个最棒的 jQuery Tab 插件
- jquery 性能优化与实践
- JAVA web项目跨域
- Intent中的四个重要属性——Action、Data、Category、Extras
- mongodb之初见
- 怎样定位耳机按键误判的问题
- CentOS-6.5安装配置JDK-7
- 编译vsftp出错的解决办法
- python中的return与print
- Windows平台下安装Mysql|Windows下Mysql安装教程
- 练习题:获取登录按钮及整个登录面板,给登录按钮添加事件,点击时让登录层示,点击登录面板的关闭按钮,关闭整个登录层
- PHP手机,邮箱正则匹配
- 【转】Selenium WebDriver + Python 环境
- 大牛说:这是不可错过的iOS开发技巧(二)
- Logistic回归模型
- 第十章 高级组件
- visio2013
- 从洲际比赛到奥运会,华为服务器还将有更大一跃
- android更新问题