LeetCode-78. 子集

2020-07-24  本文已影响0人  傅晨明

78. 子集

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

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

示例:


image.png

1 递归法

    public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> ans = new ArrayList<>();
        if (nums == null) {
            return ans;
        }
        dfs(ans, nums, new ArrayList<Integer>(), 0);
        return ans;
    }

    private void dfs(List<List<Integer>> ans, int[] nums, ArrayList<Integer> list, int index) {
        if (index == nums.length) {
            ans.add(new ArrayList<>(list));
            return;
        }
        dfs(ans, nums, list, index + 1);//not pick the number at this index
        list.add(nums[index]);
        dfs(ans, nums, list, index + 1);//pick the number at this index
        //reverse the current state
        list.remove(list.size() - 1);
    }

2 迭代法

上一篇下一篇

猜你喜欢

热点阅读