package huisu;

import java.util.ArrayList;
import java.util.List;

/**
 * 幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。 说明:解集不能包含重复的子集。
 */
/**
 * 回溯法依次追加,1,1 2,1 2 3,移除3,i依旧不小于length,继续移除,变成1,start变成2,1 3,2 ,2 3, 3
 *  */
public class miji {
    public static void main(String[] args) {
        int []nums={1,2,3};
        List<List<Integer>> list=subsets(nums);
        int x=0;
    }
    public static List<List<Integer>> subsets(int[] nums) {
        if(nums==null||nums.length==0){
            return null;
        }
        List<List<Integer>> list=new ArrayList<>();
        List<Integer> result=new ArrayList<>();
        helper(list,result,nums,0);
        return list;

    }
    public static void helper(List<List<Integer>> list,List<Integer> result,int []nums,int start){
        list.add(new ArrayList<>(result));
        for(int i=start;i<nums.length;i++){
            result.add(nums[i]);
            helper(list,result,nums,i+1);
            result.remove(result.size()-1);

        }


    }

    
}