Subsets

原创 2015年07月10日 21:25:10

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],
  []
]

题目解析:

求一个无重复元素的数组的所有子集的集合。要求是:子集排序是升序的,并且没有重复的子集。

解题方法:

可以用递归,但是比较复杂,本主也不会,所以我想了一种简单的方法。三位比特的二进制为000~111,其中没有重复的0 、1组合,由此可知,求某个子集时,我们将0、1序列作为一个数组,对应为1的nums数组的元素是此子集的组成元素。000~111二进制序列遍历完的时候,数组子集也就找完了。为了满足题目要求,我们先将数组整体进行由小到大排序即可。代码如下:
class Solution {
public:
    void int_to_bool(int n,vector<int>&index)
    {
        int len=index.size();
        index.clear();
        index.resize(len);
        int i=0;
        while(n)
        {
            int temp=n%2;
            index[i]=temp;
            i++;
            n/=2;
        }
    }
    vector<vector<int>> subsets(vector<int>& nums) {
        vector<vector<int>> res;
        if(nums.size()==0) return res;
        sort(nums.begin(),nums.end());
        int len=nums.size();
        int max=(1<<nums.size());
        vector<int> index(len,0);
        for(int i=0;i<max;i++)
        {
            int_to_bool(i,index);
            vector<int> temp;
            for(int j=0;j<len;j++)
            {
                if(index[j]==1)
                temp.push_back(nums[j]);
            }
            res.push_back(temp);
        }
        return res;
    }
};




leetcode 78. Subsets-数组子集|回溯算法

原题链接:78. Subsets 【思路1-Java】回溯算法|递归实现 本解法采用回溯算法实现,回溯算法的基本形式是“递归+循环”,正因为循环中嵌套着递归,递归中包含循环,这才使得回溯比一般的递归和...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016年06月07日 17:04
  • 4027

【LeetCode-面试算法经典-Java实现】【078-Subsets(子集)】

【078-Subsets(子集)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a set of distinct integers, nums, retur...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月03日 07:19
  • 2153

LeeCode Subsets 子集问题解答分析

这道题的思考方法很重要,要学会为电脑思考,怎么填写子集才是电脑最快捷方便的方法呢。 下面看看举例这个过程是如何的,现在假设有集合{1,2,3,4}如何求出他的所有子集呢: 初始化子集有的元素: ...
  • kenden23
  • kenden23
  • 2013年11月12日 15:58
  • 2088

LeetCode Subsets II (带有重复元素的组合)

Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not...
  • wuli2496
  • wuli2496
  • 2015年06月20日 10:04
  • 851

leetcode:暴力枚举法之Subsets II

leetcode:暴力枚举法之Subsets II 题目; Given a collection of integers that might contain duplicates, S, retur...
  • what_lei
  • what_lei
  • 2016年08月13日 12:22
  • 177

第十四周(subsets,NP问题)

第十四周(subsets,NP问题)目录: 本周完成题目 主要过程思路 相关代码 一、本周完成题目 本周共完成2道题目,2道Medium。主要是关于子集的两个问题。 具体完成题目及难度如下表:...
  • qq_24486635
  • qq_24486635
  • 2017年05月24日 16:46
  • 111

[LeetCode]—Subsets 求数组子集

Subsets   Given a set of distinct integers, S, return all possible subsets. Note: El...
  • SUN20082567
  • SUN20082567
  • 2014年07月09日 16:11
  • 716

BackTrack-----找出一个集合的所有子集(78. Subsets)

原题目 参考博文
  • yinchaoji_
  • yinchaoji_
  • 2017年05月08日 22:24
  • 164

【2015新手赛网络赛】 1004 Good Subsets

题意给定一个数N,问所有满足下述性质的集合的个数: 集合中所有数的数码都只出现一次。 例如:{135,27,49}符合,{134,27,49}不符合(因为出现了两个4),{177,23}不符合(因...
  • yeziqing10
  • yeziqing10
  • 2015年12月21日 00:33
  • 242

leetcode -day31 Subsets I II

1、  Subsets Given a set of distinct integers, S, return all possible subsets. Note: Elements in...
  • KUAILE123
  • KUAILE123
  • 2014年06月18日 17:17
  • 1008
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Subsets
举报原因:
原因补充:

(最多只允许输入30个字)