子集-递归

40 阅读1分钟
// 子集-递归  
// 输入:nums = [1,2,3]  
// 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]  
  
public static void recursion(int[] nums, int i, List<List<Integer>> res) {  
    if (i >= nums.length) return;  
    int size = res.size();  
    for (int j = 0; j < size; j++) {  
        List<Integer> newSub = new ArrayList<Integer>(res.get(j)); 
        newSub.add(nums[i]);  
        res.add(newSub);  
    }  
    recursion(nums, i + 1, res);  
}  
  
public static List<List<Integer>> en(int[] nums){  
    List<List<Integer>> res=new ArrayList<List<Integer>>();  
    res.add(new ArrayList<Integer>());  
    for (Integer n:nums) {  
        int size = res.size();  
        for (int i = 0; i <size ; i++) {  
            ArrayList<Integer> sub = new ArrayList<Integer>(res.get(i));  
            sub.add(n);  
            res.add(sub);  
        }  
    }  
    return res;  
}