力扣78 子集 java实现

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 中的所有元素 互不相同

递归遍历的时候,把所有节点都记录下来,就是要求的子集集合。

java 复制代码
    public static void main(String[] args) {  // 测试用
       int[] nums = {1,2,3};
       List<List<Integer>> res = subsets(nums);
        for (List<Integer> list : res) {
            System.out.println(list);
        }
    }

    public static  List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        res.add(new ArrayList<>());
        helper(nums, 0, res, new ArrayList<>());

        return res;
    }

    public static void helper(int[] nums, int cur, List<List<Integer>> res, List<Integer> temp){
        if (cur >= nums.length){
            return;
        }
        for (int i = cur; i < nums.length; i++) {
            temp.add(nums[i]);
            res.add(new ArrayList<>(temp));
            helper(nums, i + 1, res, temp);
            temp.remove(temp.size() - 1);
        }
    }

以上为记录分享用,代码较差请见谅

相关推荐
生成论实验室10 小时前
《事件关系阴阳博弈动力学:识势应势之道》第二篇:阴阳博弈——认知的动力学基础
数据结构·人工智能·科技·神经网络·算法
li16709027010 小时前
第二十七章:智能指针
c语言·数据结构·c++·visual studio
风筝在晴天搁浅11 小时前
字节高频题 小于n的最大数
算法
LabVIEW开发11 小时前
LabVIEW水力机组空蚀在线监测
算法·labview·labview知识·labview功能·labview程序
身如柳絮随风扬11 小时前
多数据源切换实战:从业务场景到3种实现方案全解析
java·分布式·微服务
AI科技星11 小时前
科幻艺术书本封面:《全域数学》第一部·数术本源 第三卷 代数原本(P95-141)完整五级目录【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
风筝在晴天搁浅11 小时前
LeetCode 92.反转链表Ⅱ
算法·leetcode·链表
王老师青少年编程11 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【贪心与二分判定】:数列分段 Section II
c++·算法·贪心·csp·信奥赛·二分判定·数列分段 section ii
Java小生不才11 小时前
Spring AI文生音
java·人工智能·spring
凯尔萨厮11 小时前
Springboot2.x+Thymeleaf项目创建
java