leetcode 78. 子集

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

 

示例 1:

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

输入:nums = [0]
输出:[[],[0]]
 

提示:

1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums 中的所有元素 互不相同

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subsets
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

遍历数组,把list中的元素都拿出来,添加上当前遍历的数字,再添加上。

    public List<List<Integer>> subsets(int[] nums) {
        int length = nums.length;
        List<List<Integer>> all = new ArrayList<>(2 << length);
        all.add(new ArrayList<>(0));
        for (int num : nums) {
            int size = all.size();
            for (int i = 0; i < size; i++) {
                List<Integer> item = all.get(i);
                List<Integer> list = new ArrayList<>(item.size());
                list.addAll(item);
                list.add(num);
                all.add(list);
            }
        }
        return all;
    }

 

posted @ 2021-04-23 14:08  旺仔古李  阅读(26)  评论(0编辑  收藏  举报