设为首页 加入收藏

TOP

LeetCode:Subsets
2015-07-24 05:55:13 来源: 作者: 【 】 浏览:6
Tags:LeetCode:Subsets

Given a set of distinct integers, S, 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 S = [1,2,3], a solution is:


[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

解题思路:
   
    由于题目已经说明S集合中数字都不同,所以子集一定有2^n个,初步估计一下后台数据中的n值

应该不会大于32的,所以我们可用一个整数的二进制表示某个数字时候是否出现在集合中,然后枚举

即可. 

解题代码:

class Solution {
public:
    vector
   
     > subsets(vector
    
      &S) { int n = S.size(); sort(S.begin(),S.end()); vector
     
       > res; for (int i = 0; i < 1 << n; ++i) { vector
      
        vec ; int tmp = i , cnt = 0 ; while (tmp) { if (tmp & 1) vec.push_back(S[cnt]); tmp >>= 1 , ++cnt ; } res.push_back(vector
       
        (vec.begin(),vec.end())); } return res; } }; 
       
      
     
    
   


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 4183Pahom on Water(网络流之.. 下一篇poj 1201 Intervals(差分约束)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: