当前位置: 首页 > 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.lqws.cn/news/120493.html

相关文章:

  • 设计模式杂谈-模板设计模式
  • 一文了解 GPU 服务器及其在数据中心中的角色
  • 在本地查看服务器上的TensorBoard
  • 联通专线赋能,亿林网络裸金属服务器:中小企业 IT 架构升级优选方案
  • Promtail采集服务器本地日志存储到Loki
  • LeetCode 3370.仅含置位位的最小整数
  • 使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯
  • AlphaFold3服务器安装与使用(非docker)(1)
  • 模拟搭建私网访问外网、外网访问服务器服务的实践操作
  • Orthanc:轻量级PACS服务器与DICOMweb支持的技术详解
  • Spring Framework 中 UriComponentsBuilder工具类
  • Educational Codeforces Round 179 (Rated for Div. 2)(A-E)
  • Python训练营打卡DAY44
  • DuckDB + Spring Boot + MyBatis 构建高性能本地数据分析引擎
  • 掌握 MotionLayout:交互动画开发
  • UniApp 全生命周期钩子详解
  • python版若依框架开发:python版若依部署
  • 【后端开发】goland分布式锁的几种实现方式(mysql,redis,etcd,zookeeper,mq,s3)
  • #Java篇:学习node后端之sql常用操作
  • 前端面试三之控制语句
  • Linux kill 暂停命令
  • vue3+elementplus表格表头加图标及文字提示
  • Starrocks中RoaringBitmap杂谈
  • Spring Boot MVC自动配置与Web应用开发详解
  • 低代码采购系统搭建:鲸采云+能源行业订单管理自动化案例
  • 国产三维CAD皇冠CAD在「金属压力容器制造」建模教程:蒸汽锅炉
  • setting up Activiti BPMN Workflow Engine with Spring Boot
  • 一起学Spring AI:核心概念
  • 沉金PCB电路板制造有哪些操作要点需要注意?
  • 中小制造企业转型:低成本国产工业软件替代方案实践