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

相关文章推荐

leetcode-78 Subsets

分析:求集合的所有子集问题。题目要求子集中元素非递减序排列,因此我们先要对原来的集合进行排序。原集合中每一个元素在子集中有两种状态:要么存在、要么不存在。这样构造子集的过程中每个元素就有两种选择方法:...
  • sole_cc
  • sole_cc
  • 2015年03月28日 19:19
  • 381

78. Subsets

回溯,位操作

[leetcode 78 & 90, Medium] Subsets I and II

Subsets I and II

[USACO 2012OPEN] Balanced Cow Subsets(meet in the middle + DFS)

题目大意:给出n(n 思路:设ai∈{-1,0,1},所求的集合可以视作Σai*xi=0,说得简单一点就是(以n = 6为例) a1*x1 + a2*x2 + a3*x3 + a4*x4 ...
  • cqbzwja
  • cqbzwja
  • 2015年07月21日 19:56
  • 393

[leetcode] 78. Subsets

Given a set of distinct integers, nums, return all possible subsets. Note: The solution set must no...

[leetcode]78. Subsets(Java)

https://leetcode.com/problems/subsets/#/description Given a set of distinct integers, nums, ret...

1st round, 78 Subsets

一道backtracking的启蒙作用的题,我还画了过程图在ppt,非常经典。。。 public class Solution {     public List> subsets(int[] n...

60. Permutation Sequence\78. Subsets\77. Combinations

Permutation Sequence 题目描述 代码实现 Subsets 题目描述 代码实现 Combinations 题目描述 代码实现60. Permutation Sequence题目描述T...

90,78. Subsets II I 典型的回溯算法,另 迭代解法和 位解法

Given a set of distinct integers, nums, return all possible subsets. Note: The solution set must no...

Leetcode 78. Subsets

iven a set of distinct integers, nums, return all possible subsets. Note: The solution set must n...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Middle-题目52:78. Subsets
举报原因:
原因补充:

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