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

力扣-46.全排列

题目描述

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

class Solution {List<List<Integer>> res = new ArrayList<>();List<Integer> path = new ArrayList<>();void backtracking(int[] nums, boolean[] used){if(path.size() == nums.length){res.add(new ArrayList(path));  //直接添加path会保存引用,回溯时修改path内容会导致已保存的结果同步变化。return;}for (int i = 0; i < nums.length; i++) {if(!used[i]){path.add(nums[i]);used[i]=true;backtracking(nums,used);path.remove(path.size()-1);used[i]=false;}}}public List<List<Integer>> permute(int[] nums) {boolean[] used = new boolean[nums.length];backtracking(nums,used);return res;}
}

小结:此题为回溯的经典题目,暂时当做模板记忆,等做多了应该会好些,需要注意的是java和C++的引用机制不同。

回溯题目模板

void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果}
}
http://www.dtcms.com/a/192313.html

相关文章:

  • 【QGIS二次开发】地图显示与交互-03
  • 嵌入式开发中使用 MySQL 数据库常见问题及解决办法
  • CSS3 变形
  • 行为型模式:责任链模式
  • RPA 自动化实现自动发布
  • tomcat项目重构踩坑易错点
  • 【2025最新】VSCode Cline插件配置教程:免费使用Claude 3.7提升编程效率
  • Electron 主进程中使用Worker来创建不同间隔的定时器实现过程
  • Electron 应用的升级机制详解
  • Electron详解:原理与不足
  • Windows 环境下 Docker Desktop 安装 + 汉化
  • MinerU安装(pdf转markdown、json)
  • win11平台下的docker-desktop中的volume位置问题
  • UR5e机器人Matlab仿真
  • 前后端设置跨域并从后端允许发送cookie
  • 【ROS2】ROS节点启动崩溃:rclcpp::exceptions::RCLInvalidArgument
  • 【Python】杂乱-[代码]python 批量修改指定文件/目录的名称
  • linux系统中如何校准时间
  • 卡洛诗,将高端西餐的冗余价值转化为普惠体验
  • 【JS】vue3中组件命名问题
  • 不建议在useEffect中进行数据获取的理由
  • 火山引擎发展方向
  • 【Hadoop】伪分布式安装
  • AbstractErrorController简介-笔记
  • Qt串口通信粘包拆包解决方案
  • 【虚幻引擎】UE5独立游戏开发全流程(商业级架构)
  • 说一说Node.js高性能开发中的I/O操作
  • 线代第二章矩阵第九、十节:初等变换、矩阵的标准形、阶梯形与行最简阶梯形、初等矩阵
  • 2025长三角杯数学建模A题思路模型代码:智能手机产品设计优化与定价问题
  • uniapp+vite+cli模板引入tailwindcss