首页 > 其他分享 >补充下,关于一个遇到的错误

补充下,关于一个遇到的错误

时间:2024-11-02 22:51:04浏览次数:3  
标签:错误 subsets 遇到 补充 ArrayList nums List current new

下面的代码在编写的过程中出现了问题,查了很久,最终解决了,突然感觉好菜啊!

涉及的知识点:递归,java引用类型

/**
 * 功能:求解所有集合的子集的算法实现,递归实现
 */
import java.util.ArrayList;
import java.util.List;

public class SetSons {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3}; // 这是你的数组
        List<List<Integer>> subsets = new ArrayList<>();
        findSubsets(nums, 0, subsets, new ArrayList<>());
        for (List<Integer> subset : subsets) {
            System.out.println(subset);
        }
    }

    private static void findSubsets(int[] nums, int start, List<List<Integer>> subsets, List<Integer> current) {
        //subsets.add(new ArrayList<>(current)); // 添加当前子集的副本到结果集,刚开始的错误就是这个地方
        //假如把刚才的代码语句换成下面这个,结果就会完全不一样
        subsets.add(new ArrayList<>(current));
        for (int i = start; i < nums.length; i++) {
            current.add(nums[i]); // 选择当前元素
            findSubsets(nums, i + 1, subsets, current); // 递归选择下一个元素
            current.remove(current.size() - 1); // 回溯,移除当前元素
        }
    }
}

解释下原因:current是ArrayList类型,也是属于引用类型,在递归过程中,current是在不断变化的,subsets.add(new ArrayList<>(current));就是将current的引用加入到目标list中。不使用副本的情况下造成了最终的子集全部为空集(回溯的原因)。递归结束后,currentList 将是一个空列表(因为它被回溯到了初始状态)。因此,list 中的所有子集都会变成空列表,因为它们都是同一个空的 currentList 的引用。

标签:错误,subsets,遇到,补充,ArrayList,nums,List,current,new
From: https://blog.csdn.net/yf3241610146/article/details/143457218

相关文章

  • saltstack 运维中的一些错误处理记录(一)
    saltstack运维中的一些错误处理记录Q1:[WARNING]Key'file_ignore_glob'withvalueNonehasaninvalidtypeofNoneType,alistisrequiredforthisvalue解决方法:  /etc/salt/master的配置文件中,将file_ignore_glob的注释全部打开,重启master即可。service......
  • 升级python版本后遇到的问题
    错误信息提示虚拟环境报错:删除venv文件后,重启pycharm,再次添加虚拟环境即可 升级python版本后MobileBy报错,python3.11升级为python3.12.3把 fromappium.webdriver.common.mobilebyimportMobileBy改为fromappium.webdriver.common.appiumbyimportAppiumBy即可 Fil......
  • Error infos:DedeCms错误警告:连接数据库失败,可能数据库密码不对或数据库服务器出错!
    检查数据库配置使用FTP工具打开htdocs/data/common.inc.php文件。查找并记录cfg_dbpwd的值(数据库密码)。验证数据库密码登录云虚拟主机控制台,进入“数据库信息”页面。单击数据库名称右侧的“管理”按钮,输入记录的密码进行验证。重置密码(如果需要)如果密码错误,点......
  • 无法显示页面,因为发生内部程序错误
    问题原因:web.config 文件在Windows操作系统云虚拟主机的子目录或二级目录下存在时,可能会导致内部程序错误,因为云虚拟主机不支持这些目录中的 web.config 文件。解决步骤:重命名 web.config 文件:进入子目录或二级目录。将 web.config 文件重命名为其他名称,例......
  • PbootCMS网站常见错误提示总结
    错误1: Parseerror:syntaxerror,unexpected':',expecting'{'原因:PHP版本过低。解决方案:切换到PHP7.x或更高版本。错误2:后台图片上传提示“上传失败:存储目录创建失败!”原因:静态资源目录权限不足。解决方案:给 static 文件夹增加权限,推荐设置为......
  • Dedecms错误警告:连接数据库失败,可能数据库密码不对或数据库服务器出错怎么解决?
    检查数据库服务器状态虚拟主机/合租服务器:联系空间商,询问数据库服务器的状态。本地调试:确保MySQL服务已启动。可以在命令行中运行以下命令:sudosystemctlstatusmysql如果服务未启动,可以尝试启动它:sudosystemctlstartmysql检查数据库配置文件......
  • 51单片机蓝牙遥控小车中遇到的问题及解决方案&步骤心得
    一、遇到的问题及解决方案Q1:马达与车盘连接不牢固。A:可用橡皮筋缠紧连接处(如图)。Q2:L298N电机驱动模块无法驱动电机。A:若是仅仅连接了一个EN引脚则可能需要对ENA(或B)的两个引脚输入同样的电平。Q3:测试蓝牙时无法将程序烧录到单片机上。A:蓝牙模块的收发口与单片机的收......
  • 函数中遇到的问题与记录
    错误示范:函数返回值的情况没有考虑完整             如果a=0,则if为假,此时没有返回值创建有关二维数组的函数时要注意行列可以全部写完整,要省略也只能省略行,列不可以省略 3 函数的声明,形参的名字可以省略,带上类型就可以了 函数的定义是特殊......
  • 错误记录2
    1.理解错误-超起步里程后/10公里内,走过的mile<=10;而不是mile=3+10;-保留到元,四舍五入,虽然结果为整数,但并不代表着变量为int类型拿这里举例子来说:车费为double类型,只是输出时用“%.0lf”来保证结果四舍五入2.在bin_search函数中,当前的条件判断逻辑可能导致在某些情况下......
  • Zookeeper 学习的一些资料和实操遇到的问题的记录
    主要参考地址:https://www.cnblogs.com/leeSmall/p/9563547.htmlzookeeper安装问题:https://blog.csdn.net/peng2hui1314/article/details/107255142/注意配置文件多余空格问题,会导致启动失败,认真检查注意不要下载错了版本       标准版本(apache-zookeep......