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

回溯算法——排列篇

目录

一、全排列

二、全排列II


一、全排列

46. 全排列 - 力扣(LeetCode)

class Solution {List<List<Integer>> result=new ArrayList<>();LinkedList<Integer> path=new LinkedList<>();boolean[] used;public List<List<Integer>> permute(int[] nums) {used=new boolean[nums.length];backtracking(nums);return result;}public void backtracking(int[] nums){if(path.size()==nums.length){result.add(new ArrayList<>(path));return;}for(int i=0;i<nums.length;i++){if(used[i])continue;used[i]=true;path.add(nums[i]);backtracking(nums);path.removeLast();//移除最后一个添加的元素used[i]=false;//元素修改为未使用}}
}

二、全排列II

47. 全排列 II - 力扣(LeetCode)

class Solution {List<List<Integer>> result=new ArrayList<>();List<Integer> path=new ArrayList<>();public List<List<Integer>> permuteUnique(int[] nums) {boolean[] used=new boolean[nums.length];Arrays.fill(used,false);Arrays.sort(nums);backtracking(nums,used);return result;}public void backtracking(int[] nums,boolean[] used){if(path.size()==nums.length){result.add(new ArrayList<>(path));return;}for(int i=0;i<nums.length;i++){if(i>0&&nums[i]==nums[i-1]&&used[i-1]==true)continue;if(used[i]==false){used[i]=true;path.add(nums[i]);backtracking(nums,used);path.removeLast();used[i]=false;}}}
}

http://www.xdnf.cn/news/7846.html

相关文章:

  • 新导游入行规范与职业发展指导
  • auto关键字解析
  • 时源芯微|π型LC滤波电路
  • 力扣面试150题--填充每个节点的下一个右侧节点指针 II
  • SPI协议软件实现 W25QXX flash 存储器
  • 【写在创作纪念日】基于SpringBoot和PostGIS的各省东西南北四至极点区县可视化
  • C++函数重载
  • 2025年保姆级教程:Powershell命令补全、主题美化、文件夹美化及Git扩展
  • 线端子人工做线操作介绍
  • C++学习:六个月从基础到就业——多线程编程:条件变量
  • 诊断仪进行CAN采样点测试的原理
  • 管理会议最佳实践:高效协同与价值最大化
  • ctfhub技能书http协议
  • 2570. 合并两个二维数组 - 求和法
  • RTMP协议解析【三】
  • 【论文复现】——基于NDT与ICP结合的点云配准算法(matlab版)
  • 网页 HTML布局(详解)
  • 精益数据分析(74/126):从愿景到落地的精益开发路径——Rally的全流程管理实践
  • 新能源汽车充电桩资源如何利用资源高效配置?
  • Linux 内核音视频架构(V4L2 )介绍
  • 算法中的数学:欧拉函数
  • 工作流引擎-03-聊一聊什么是流程引擎(Process Engine)?
  • 用户缓冲区
  • JavaScript 函数、方法、限定符
  • 关于Vue自定义组件封装的属性/事件/插槽的透传问题
  • 密码合集(不定期更新)
  • 【VS2017】cpp文件字符编码异常导致编译报错
  • 老牌硬件检测工具的现代应用场景分析
  • 【动手学深度学习】1.3. 各种机器学习问题
  • spring的注入方式都有什么区别