一,问题描述
1,给定一个整数集合(集合元素具有相异性),求出所有的子集合。
2,例如给定集合为[1,2,3]
输出:
[3]
[1]
[2]
[1 2 3]
[1, 3]
[2 ,3]
[1, 2]
[]
3,解题思路:
使用位操作,不使用递归。首先,计算一下该数组nums一共有多少个子集,设数组nums的长度为n,那么它的子集总数为num=2^n。
设置一个变量index,其初始值为1。那么从0到2^n-1中数,对于每一个数i,用index与这个i比较,如果得出的结果大于0,则把该数输入到List<>中取,比较n次,因为数组的长度为n。
二,AC了的程序(用Java实现的)
import java.util.*;
public class Test2{
public List<List<Integer>> subsets(int []nums)
{
List<List<Integer>> list=new ArrayList<List<Integer>>();
if(nums==null||nums.length==0)