LeedCode子集

题目

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

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

示例:

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

输出:

[

  [3],

  [1],

  [2],

  [1,2,3],

  [1,3],

  [2,3],

  [1,2],

  []

]

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/subsets

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解及思路

源码

class Solution {

    public List<List<Integer>> subsets(int[] nums) {

        List<List<Integer>> ret = new ArrayList<>();

        List<Integer> exa = new ArrayList<>();

        int len = nums.length;

        ret.add(exa);

        if(len==0)

            return ret;

        for(int i = 0;i<len;i++){

            dfs(ret,exa,nums,i+1,len-1);

        }

        return ret;

    }

    public static void dfs(List<List<Integer>> ret,List<Integer> exa,int[] nums,int num,int len){

        if(num==0){

            ret.add(new ArrayList<>(exa));

            return;

        }

        for(int i = len;i>num-2;i--){

            exa.add(nums[i]);

            dfs(ret,exa,nums,num-1,i-1);

            exa.remove(exa.size()-1);

        }

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。