当前位置: 首页 > news >正文

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

全排列

  • 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.jsqmd.com/news/302912/

相关文章:

  • 商业照明如何提升店铺档次与顾客体验?关键参数解析
  • python之函数
  • 10个AI写作利器,助你快速完成数学建模论文复现
  • 【vLLM 学习】Save Sharded State
  • 固件烧录失败故障分析与应对策略
  • GitHub 热榜项目-日榜精选(2026-01-26)|AI生态、多语言生态、实用工具与大厂项目 | mlx-audio、PageIndex、remotion等
  • SpringBoot如何实现大文件上传下载?
  • 讲讲汽车座椅发泡生产线,领新机械技术强服务优
  • 2026年实力强的少儿专注力培训机构怎么选,天使英才是优选
  • 2026年度讲讲口碑不错的无尘车间工程服务商价格与靠谱推荐
  • 细聊专业热解炉网带工厂,西北地区选购哪家更靠谱?
  • 2026年裂解炉网带推荐,西北地区靠谱厂家大揭秘
  • 上海仓储物流价格怎么收费,上海佳莘仓储物流费用高吗
  • 微软MOS认证2月份考试时间
  • Selenium 截图与元素高亮定位技巧
  • Selenium 与 BeautifulSoup 结合解析页面
  • 第 2 章 从 C 代码到机器码:零基础全流程实操(基于 Ubuntu 24.04)
  • 第1章 从C代码到机器指令:完整编译流程解析
  • 新中式服装2026年推荐排行,解锁东方美学新风尚,新中式服装排行榜精选优质品牌助力工程采购
  • Excel金钱函数实战:用DOLLAR/RMB函数实现智能数字格式化
  • 构建高可用ISBN查询服务的技术实践:架构演进与性能优化
  • 数学建模论文的高效复现方法有哪些?10款AI写作工具帮你轻松搞定
  • AI赋能传媒科技创新研究报告 - 详解
  • 10个AI写作神器,让你的数学建模论文复现效率翻倍
  • 想高效复现数学建模论文?这10个AI写作助手不可错过
  • 汽车座椅发泡生产线厂家哪家性价比高,领新机械值得考虑
  • 聊聊旋转蒸发器与普通蒸馏区别,大型、小型供应商靠谱的有哪些
  • 讲讲国内知名的洁净板源头厂家,哪个品牌口碑比较好
  • 2026年洁净板优质厂家排名,靠谱供应商推荐,教你如何选择
  • 2026年服务不错的大米工厂推荐,新孖公仔在肇庆云浮等地表现如何