Middle-题目52:78. Subsets

原创 2016年05月31日 16:23:43

题目原文:
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.
题目大意:
给出一个无重复元素的数组,求出他的所有子集。
要求:
子集中的元素不能是递减的,且结果中不能有重复的子集。
题目分析:
既然是不重复的那就好办了,求数组的长度n,并遍历一个n位长的比特串,其中哪一位为1,原数组的哪个元素就加入子集。
源码:(language:java)

public class Solution {
    public List<List<Integer>> subsets(int[] nums) {
        Arrays.sort(nums);
        List<List<Integer>> subsets = new ArrayList<List<Integer>>();
        int count = 1<<nums.length;
        for(int j=0;j<count;j++) {
            List<Integer> subset = new ArrayList<Integer>();
            int index=0;
            int i=j;
            while(i!=0) {
                if(i%2==1)
                    subset.add(nums[index]);
                index++;
                i=i>>1;
            }
            subsets.add(subset);
        }
        return subsets;
    }
}

成绩:
2ms,beats 59.76%,众数3ms,44.63%
Cmershen的碎碎念:
计算机是基于二进制运算的,所以能用bit manipulate方法解决的问题往往都比较方便。但此题复杂度达到O(2n),使用位运算比单纯的回溯也仅仅是易于理解。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

LeetCode78:Subsets

Given a set of distinct integers, nums, return all possible subsets.Note: Elements in a subset must...
  • u012501459
  • u012501459
  • 2015年07月06日 17:33
  • 3278

两种回溯方法解决子集问题的思路 leetcode 78. Subsets

leetcode 78. Subsets  注意:理解回溯算法尽量采用动态规划的思路。 第一种,例子{1,2,3} ,子集问题即为各位有无两种情况,那么就可以直接搜索下去。 im...
  • chengdezhi2011
  • chengdezhi2011
  • 2017年02月16日 10:34
  • 555

[leetcode-78]subsets(java)

问题如下: Given a set of distinct integers, nums, return all possible subsets.Note: Elements in a subs...
  • zdavb
  • zdavb
  • 2015年08月05日 22:42
  • 915

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

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

leetcode 78 Subsets

leetcode 78 subsets python c++
  • sxingming
  • sxingming
  • 2016年06月25日 09:06
  • 391

LeetCode 78:Subsets

Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset m...
  • geekmanong
  • geekmanong
  • 2016年01月24日 17:04
  • 1259

Bit Manipulation - Subsets

输入数组,返回数组的幂集
  • u013819100
  • u013819100
  • 2015年08月12日 10:47
  • 565

LeetCode OJ 系列之78 Subsets --Python

Problem: Given a set of distinct integers, nums, return all possible subsets. Note: Elements in...
  • ln152315
  • ln152315
  • 2015年11月18日 22:07
  • 916

[C++]LeetCode: 63 Subsets

题目: Given a set of distinct integers, S, return all possible subsets. Note: Elements in a...
  • cinderella_niu
  • cinderella_niu
  • 2014年12月30日 21:13
  • 850

78. Subsets

分析:求集合的所有子集问题。题目要求子集中元素非递减序排列,因此我们先要对原来的集合进行排序。原集合中每一个元素在子集中有两种状态:要么存在、要么不存在。这样构造子集的过程中每个元素就有两种选择方法:...
  • wusecaiyun
  • wusecaiyun
  • 2015年08月03日 22:17
  • 225
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Middle-题目52:78. Subsets
举报原因:
原因补充:

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