子集

作者: 小白学编程 | 来源:发表于2018-10-01 08:55 被阅读0次

    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

    说明:解集不能包含重复的子集。

    示例:

    输入: nums = [1,2,3]
    输出:
    [
    [3],
    [1],
    [2],
    [1,2,3],
    [1,3],
    [2,3],
    [1,2],
    []
    ]

    思路

    对于每一个数,都有可选和不选两条路,这样能形成一棵二叉树

    class Solution {
        
        int n=0;
        
        public List<List<Integer>> subsets(int[] nums) {
            List<List<Integer>> L = new ArrayList<List<Integer>>();
            List<Integer> list = new ArrayList<Integer>();
            if (nums.length == 0 || nums==null){
                return L;
            }
            sub(list, L, n, nums);
            return L;
            
            
        }
        
        public void sub(List<Integer> list, List<List<Integer>> L, int n, int[] nums){
            
            if (n == nums.length){
                L.add(list);
                return;
            }
            List<Integer> list1 = new ArrayList<>();
            list1.addAll(list);
              
            list1.add(nums[n]);
            sub(list1, L, n+1, nums);
            sub(list, L, n+1, nums);
            
        }
    }
    

    相关文章

      网友评论

          本文标题:子集

          本文链接:https://www.haomeiwen.com/subject/peagoftx.html