Leetcode 78. 子集(回溯法)

2023-11-12

  1. 子集(回溯法)
class Solution {
    List<List<Integer>> output = new ArrayList();
    List<Integer> sub = new ArrayList();
    int n,k = 0;
    public List<List<Integer>> subsets(int[] nums) {
        n = nums.length;
        for(k = 0; k <= n; k++){
            sub.clear();
            backTrace(nums,0);
        }
        return output;
    }

    private void backTrace(int[] nums,int index){
        if(sub.size() == k)
            output.add(new ArrayList<Integer>(sub));
        else{
            for(int i = index;i<n;i++){
                sub.add(nums[i]);
                backTrace(nums,i+1);
                sub.remove(sub.size() - 1);
            }
        }
    }
}

总结

add()的时候要注意,不要add引用。
回溯法也是一种递归,这种方法先把容器搞满,再一个一个退回。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode 78. 子集(回溯法) 的相关文章

  • C语言 IDE的介绍及安装

    目录 C语言 IDE介绍 GCC C Free Code Blocks CLang CLion XCode Dev C Turbo C Visual C 6 0 Visual Studio C语言 IDE安装 安装包 版本选择 注意事项 C
  • 使用VMware给Ubuntu增加磁盘容量

    一般只给虚拟机里面的Ubuntu很少的空间 到了空间不足就尴尬了 那么就扩充磁盘解决问题吧 一 VMware手动扩容 打开虚拟机 选择你要扩充的客户机 点击 编辑虚拟机设置 然后详细设置 选择硬盘 gt 扩展 gt 目标总磁盘大小 不是增量
  • [力扣c++实现] 152. 乘积最大子数组

    152 乘积最大子数组 给你一个整数数组 nums 请你找出数组中乘积最大的非空连续子数组 该子数组中至少包含一个数字 并返回该子数组所对应的乘积 测试用例的答案是一个 32 位 整数 子数组 是数组的连续子序列 示例 1 输入 nums
  • xshell无法连接虚拟机原因Connection failed. Type `help' to learn how to use Xshell prompt.

    问题分析 xshell无法连接的问题有多种 比如虚拟机没有安装ssh服务 虚拟机没有启动ssh服务 又或者是防火墙 禁用端口等问题 这些都比较容易解决 下面我介绍的是我遇到的一种比较难的无法连接情况 VMware无法在Windows下创建适
  • Proxy(代理)服务器

    代理服务器 代理服务器必须有DNS地址 如果开启转发需要在客户端设置DNS地址 NAT 是直接与目标服务器通信的 也就是直接访问的baidu服务器 目标地址是baidu服务器的地址 所以必须要有DNS来解析主机名 如果是通过代理客户端是没有

随机推荐