力扣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);
        }
    }

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

相关推荐
linweidong2 分钟前
C++ 中避免悬挂引用的企业策略有哪些?
java·jvm·c++
用户93761147581614 分钟前
并发编程三大特性
java·后端
CoderCodingNo4 分钟前
【GESP】C++五级/四级练习(双指针/数学) luogu-P1147 连续自然数和
开发语言·c++·算法
阿在在5 分钟前
Spring 系列(二):加载 BeanDefinition 的几种方式
java·后端·spring
颜酱7 分钟前
前端算法必备:双指针从入门到很熟练(快慢指针+相向指针+滑动窗口)
前端·后端·算法
Wect11 分钟前
LeetCode 274. H 指数:两种高效解法全解析
算法·typescript
Q741_14712 分钟前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(2) 作答语言:C/C++ 哈夫曼编码 LRU
c语言·数据库·c++·算法·笔试·哈夫曼编码·哈夫曼树
小当家.10513 分钟前
Maven与Gradle完整对比指南:构建工具深度解析
java·gradle·maven
Hello.Reader19 分钟前
PyFlink DataStream Operators 算子分类、函数写法、类型系统、链路优化(Chaining)与工程化踩坑
前端·python·算法
hweiyu0020 分钟前
最短路径算法:Floyd-Warshall算法
算法