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

2025年- H68-Lc176--46.全排列(回溯,组合)--Java版

1.题目描述

在这里插入图片描述

2.思路

(1)终止条件:当path.size()==nums.size()说明要到收获的结果了(也就是叶子节点)。
(2)思路
使用一个临时列表 cur 表示当前构造中的排列;

每次递归遍历 nums 中还未使用的元素;

达到终止条件后将 cur 加入结果集中;

用回溯法(递归 + 回退)尝试所有可能。
(3)cur.remove(cur.size()-1)
假设 cur 列表目前是 [1, 2, 3],此时调用 cur.remove(cur.size() - 1) 后:

cur.size() = 3

cur.size() - 1 = 2

所以 cur.remove(2) 就是移除索引为 2 的元素,即移除 3,此时 cur 变成 [1, 2]。

3.代码实现

class Solution {public List<List<Integer>> permute(int[] nums) {//res:用于保存所有的排列结果。List<List<Integer>> res=new ArrayList<>();//cur:当前正在构造的排列序列。List<Integer> cur=new ArrayList<>();//调用回溯函数开始递归构造所有排列。backtracking(res,cur,nums);//返回最终的所有排列结果。return res;}private static void backtracking(List<List<Integer>> res,List<Integer> cur,int[] nums){//终止条件,排序序列的长度等于数组长度if(cur.size()==nums.length){res.add(new ArrayList<>(cur));}//定义回溯方法,递归地构造排列。for(int i=0;i<nums.length;i++){if(!cur.contains(nums[i])){//遍历 nums 中的所有元素,尝试每个元素加入当前排列 cur。// 如果当前元素还未被使用(即不在当前排列 cur 中),则继续处理。防止重复使用同一个元素。cur.add(nums[i]);//选择这个元素,加入到当前排列中。backtracking(res,cur,nums);//撤销选择(回溯):将当前选择的元素移除,为下一轮尝试其他可能性做好准备。cur.remove(cur.size()-1);}}//遍历 nums 中的所有元素,尝试每个元素加入当前排列 cur。}
}
http://www.xdnf.cn/news/866935.html

相关文章:

  • 通光散基因组-文献精读139
  • C++11 defaulted和deleted函数从入门到精通
  • 【更新中】(文档+代码)基于推荐算法和Springboot+Vue的购物商城
  • 【echarts】分割环形图组件
  • 【Java算法】八大排序
  • 【2025】通过idea把项目到私有仓库(3)
  • [Java 基础]银行账户程序
  • 如何选择合适的embedding模型用于非英文语料
  • 亚马逊站内信规则2025年重大更新:避坑指南与合规策略
  • golang常用库之-go-feature-flag库(特性开关(Feature Flags))
  • [蓝桥杯]密码脱落
  • NTC热敏电阻
  • 【Linux】进程
  • Pytorch模型格式区别( .pt .pth .bin .onnx)
  • nssm配置springboot项目环境,注册为windows服务
  • 【免杀】C2免杀技术(十五)shellcode混淆uuid/ipv6/mac
  • Mac 双系统
  • 深入详解开源工具DCMTK:C++开发的DICOM工具包
  • <el-table>构建树形结构
  • KrillinAI:视频跨语言传播的一站式AI解决方案
  • EasyRTC嵌入式音视频通信SDK音视频功能驱动视频业务多场景应用
  • HOPE800系列变频器安装到快速调试的详细操作说明
  • Delft3D软件介绍及建模原理和步骤;Delft3D数值模拟溶质运移模型建立;地表水环境影响评价报告编写思路
  • CppCon 2015 学习:3D Face Tracking and Reconstruction using Modern C++
  • 前端大数高精度计算解决方案,BigNumber.js
  • 前端面试二之运算符与表达式
  • 组件库二次封装——透传问题
  • UniApp 全生命周期钩子详解
  • 数据标注与大模型的双向赋能:效率与性能的跃升
  • CMake + Ninja 构建程序示例