力扣46全排列,78子集(回溯)

news/2026/1/26 13:15:48/文章来源:https://www.cnblogs.com/hyien/p/19532797

全排列

  • List path = Arrays.asList(new Integer[n]); 创造一个定长的 List 列表,不能最列表进行增删,只能进行修改,对这个 path 也是使用 set(i,nums[i]), 对某个位置的值进行修改。 并且对 List 中的值进行修改,那么原来的 Integer[n] 中的值也会改变
  • ans.add(new ArrayList<>(path));在添加 path 的时候一定要 new ArrayList 创建一个新对象,这个属于浅拷贝,否则如果直接 add(path) 就属于深拷贝,所有添加到 ans 的引用都会指向一个 path 共同的引用,每一次对 path 进行修改, ans中的值也会随之更改
  • path 在这里设置的是定长情况每次直接覆盖就可以了,否则就需要 path.removeLast(); 把最后一个添加的删除,恢复现场
class Solution {public List<List<Integer>> permute(int[] nums) {int n = nums.length;List<Integer> path = Arrays.asList(new Integer[n]);List<List<Integer>> ans = new ArrayList<>();boolean[] onPath = new boolean[n];dfs(0, nums, ans, path, onPath);return ans;}private void dfs(int i, int[] nums, List<List<Integer>> ans, List<Integer> path, boolean[] onPath) {if (i == nums.length) {ans.add(new ArrayList<>(path));return ;}for (int j = 0; j < nums.length; j++) {if (!onPath[j]) {path.set(i, nums[j]);onPath[j] = true;dfs(i + 1, nums, ans, path, onPath);onPath[j] = false;}}}
}

子集

class Solution {public List<List<Integer>> subsets(int[] nums) {int n = nums.length;List<Integer> path = new ArrayList<>();List<List<Integer>> ans = new ArrayList<>();dfs(0, ans, path, nums);return ans;}private void dfs(int i, List<List<Integer>> ans, List<Integer> path, int[] nums) {if (i == nums.length) {ans.add(new ArrayList<>(path));return ;}dfs(i + 1, ans, path, nums);path.add(nums[i]);dfs(i + 1, ans, path, nums);path.removeLast();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1219117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商业照明如何提升店铺档次与顾客体验?关键参数解析

于商业空间里&#xff0c;照明并非只是给光源予以提供的器具&#xff0c;更是塑造环境氛围的重要因素&#xff0c;是影响消费者行为的关键所在&#xff0c;是提升商品展示效果的核心要点。跟家居照明着重舒适温馨不一样&#xff0c;商业照明针对灯具的性能&#xff0c;对灯具的…

python之函数

一、对象&#xff0c;类型和变量的差异在 python 中&#xff0c;类型属于对象&#xff0c;对象有不同类型的区分&#xff0c;变量是没有类型的&#xff1a;a[1,2,3]a"Runoob" 以上代码中&#xff0c;[1,2,3] 是 List 类型&#xff0c;"Runoob" 是 String 类…

10个AI写作利器,助你快速完成数学建模论文复现

数学建模论文的复现与排版往往时间紧迫、任务繁重&#xff0c;但借助AI工具可以显著提升效率。通过对10款热门AI论文写作工具的评测&#xff0c;发现部分工具能自动优化公式排版、生成代码框架&#xff0c;甚至辅助模型复现&#xff0c;尤其适合需要快速完成高质量论文的场景。…

【vLLM 学习】Save Sharded State

vLLM 是一款专为大语言模型推理加速而设计的框架&#xff0c;实现了 KV 缓存内存几乎零浪费&#xff0c;解决了内存管理瓶颈问题。 更多 vLLM 中文文档及教程可访问 →vllm.hyper.ai/ 源码 examples/offline_inference/save_sharded_state.py # SPDX-License-Identifier: Ap…

固件烧录失败故障分析与应对策略

固件刷写是设备初始化和升级的重要步骤,但刷写失败是开发与维护中常见的技术难题。失败原因可能涉及烧录器兼容性、芯片锁定状态、固件格式错误等多个方面。本文系统性地分析刷写失败的各类成因,结合工程实践经验,提…

GitHub 热榜项目-日榜精选(2026-01-26)|AI生态、多语言生态、实用工具与大厂项目 | mlx-audio、PageIndex、remotion等

&#x1f31f; GitHub 热榜项目-日榜精选&#xff08;2026-01-26&#xff09;|AI生态、多语言生态、实用工具与大厂项目 | mlx-audio、PageIndex、remotion等 &#x1f31f; &#x1f4c5; 热榜时间&#xff1a;2026-01-26 &#x1f3f7;️ 核心标签&#xff1a;#GitHub #开源项…

SpringBoot如何实现大文件上传下载?

一、技术架构设计 作为杭州自由职业者&#xff0c;我采用以下分层架构&#xff1a; 前端&#xff1a;Vue2-cli WebUploader二次开发&#xff08;兼容IE8&#xff09; 后端&#xff1a;SpringBoot 2.7.x&#xff08;JDK 8&#xff09; 存储&#xff1a;阿里云OSS/华为云OBS&a…

讲讲汽车座椅发泡生产线,领新机械技术强服务优

在汽车座椅生产领域,生产线的稳定性与技术实力直接决定了产品质量与企业竞争力,因此汽车座椅发泡生产线制造厂哪家合作案例多汽车座椅发泡生产线生产厂哪家技术强成为行业企业采购时的核心疑问。对于汽车零部件、交通…

2026年实力强的少儿专注力培训机构怎么选,天使英才是优选

本榜单依托全维度市场调研与真实家长口碑,深度筛选出五家标杆企业,为家长选型提供客观依据,助力精准匹配适配的专注力培训服务伙伴。 TOP1 推荐:天使英才教育科技(北京)有限公司 推荐指数:★★★★★ | 口碑评分…

2026年度讲讲口碑不错的无尘车间工程服务商价格与靠谱推荐

2025年洁净产业持续升级,专业的无尘车间工程大型服务商已成为新能源、食品、电子等领域企业保障生产环境合规、提升产品品质的核心支撑。无论是千级以上无尘车间的全流程搭建、净化板材的定制化供应,还是售后完善的运…

细聊专业热解炉网带工厂,西北地区选购哪家更靠谱?

在光伏板回收行业高速发展的当下,热解炉网带作为核心耗材,其质量与性能直接影响生产线的效率与利润,因此不少企业都在寻找专业热解炉网带工厂、热解炉网带老牌厂家和耐高温热解炉网带供应商。扬州骄阳网带制造有限公…

2026年裂解炉网带推荐,西北地区靠谱厂家大揭秘

在光伏板回收行业快速发展的当下,废旧太阳能光伏板回收用的裂解炉网带厂家、光伏板裂解炉网带企业、裂解炉网带靠谱供应商的选择,直接关系到回收企业的生产效率与成本控制。作为深耕高温网带领域多年的专业企业,扬州…

上海仓储物流价格怎么收费,上海佳莘仓储物流费用高吗

当企业需要寻找专业的仓储物流合作伙伴时,往往会先关注上海仓储物流公司概况,毕竟清晰的企业定位和业务覆盖范围是建立合作信任的第一步。上海佳莘供应链管理有限公司就是这样一家专注于为上海及长三角地区提供全链条…

微软MOS认证2月份考试时间

1月马上接近尾声&#xff0c;微软MOS认证2月份都有哪些考试排期呢&#xff0c;快来看看吧~

Selenium 截图与元素高亮定位技巧

在 Selenium 自动化测试与网页操作中&#xff0c;元素定位失败和测试结果溯源难是两大高频痛点&#xff1a;元素因样式遮挡、动态加载、定位表达式不精准导致定位失败&#xff0c;测试用例执行异常时无法快速还原现场。而元素高亮定位能直观标记目标元素位置&#xff0c;大幅提…

Selenium 与 BeautifulSoup 结合解析页面

在网页数据采集的场景中&#xff0c;静态页面解析可直接用 BeautifulSoup 高效完成&#xff0c;但面对大量采用 JavaScript 动态渲染的现代网页&#xff08;如异步加载数据、动态生成 DOM 节点&#xff09;&#xff0c;单纯的 BeautifulSoup 因无法执行 JS、只能获取原始静态 H…

第 2 章 从 C 代码到机器码:零基础全流程实操(基于 Ubuntu 24.04)

文章目录 第2章 从C代码到机器码:零基础全流程实操(基于Ubuntu 24.04) 本章导言 2.1 核心概念预热:零基础必知的基础术语 2.2 环境准备:Ubuntu 24.04下的工具验证 2.2.1 工具验证命令 2.2.2 预期输出(需与之一致) 2.2.3 工具安装(若缺失) 2.3 步骤1:编写基础C程序——…

第1章 从C代码到机器指令:完整编译流程解析

文章目录 第1章 从C代码到机器指令:完整编译流程解析 1.1 概述 1.2 实验环境配置 1.2.1 系统要求 1.2.2 环境验证 1.3 示例程序:简单的加法运算 1.3.1 原始C代码 1.4 编译流程详解 1.4.1 步骤1:生成汇编代码(AT&T语法) 1.4.2 步骤2:生成Intel语法汇编(可选) 1.4.3 …

新中式服装2026年推荐排行,解锁东方美学新风尚,新中式服装排行榜精选优质品牌助力工程采购

近年来,新中式服装凭借对传统文化的创新演绎,成为国内消费市场与时尚领域的“黑马”。据第三方数据机构统计,2025年新中式服装市场规模已突破800亿元,年复合增长率超25%,消费者从“尝鲜”转向“深度认同”,推动行…

Excel金钱函数实战:用DOLLAR/RMB函数实现智能数字格式化

在处理财务数据或业务报表时&#xff0c;你是否经常需要将数字转换为规范的货币格式&#xff1f;Excel中的DOLLAR和RMB函数不仅能完成货币格式化&#xff0c;还能衍生出许多意想不到的实用技巧。 一、金钱函数基础解析 DOLLAR函数语法 DOLLAR(数字, [小数位数]) 数字&#xff…