【一天一道LeetCode】#78. Subsets
2016-06-02 17:04
281 查看
一天一道LeetCode
本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处
(一)题目
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; } };
相关文章推荐
- 查看github pages文档的方式
- 使用BAE的基于Web.py的简单博客程序
- 两分钟学会如何在github托管代码
- 简单几行JS Code实现IE邮件转发新浪微博
- js实现新浪微博首页效果
- jquery实现仿新浪微博评论滚动效果
- jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
- 新浪微博API开发简介之用户授权(PHP基础篇)
- jQuery实现鼠标选文字发新浪微博的方法
- js实现选中页面文字将其分享到新浪微博
- Android自定义View实现仿GitHub的提交活跃表格
- python调用新浪微博API项目实践
- PHP Curl模拟登录微信公众平台、新浪微博实例代码
- JS实现仿新浪微博发布内容为空时提示功能代码
- Python 获取新浪微博的最新公共微博实例分享
- github配置使用指南
- github版本库使用详细图文教程(命令行及图形界面版)
- python使用rsa加密算法模块模拟新浪微博登录
- 新浪微博OAuth认证和储存的主要过程详解