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

力扣HOT100(35)回溯-全排列

核心思路:回溯法(填空格思想)

我们可以把全排列想象成:有 n 个空格,我们要把数组里的 n 个数,一个一个填进去,每个数只能用一次

回溯法就是模拟这个 “填空” 的过程:

  1. 从第一个空格开始,尝试所有没被用过的数
  2. 选一个数填进去,标记为 “已使用”
  3. 递归填下一个空格
  4. 填完所有空格,得到一个排列,保存结果
  5. 回溯:把刚才填的数拿出来,标记为 “未使用”,尝试下一个数

这就是回溯最核心的三步:做选择 → 递归 → 撤销选择

方法一:标记数组版(面试首选,最好写、最好懂)

1. 思路详解

用一个used布尔数组,标记哪个数已经被用过了,不能再选。

  • 终止条件:当前排列的长度等于数组长度,说明所有空格都填完了
  • 循环:遍历所有数,没被用过的就可以选
  • 做选择:把数加入当前排列,标记为已用
  • 递归:填下一个位置
  • 撤销选择:把数从当前排列移除,标记为未用
class Solution { public: //写一个回溯函数 void backtrack(vector<vector<int>>& res,vector<int>& output,int first,int len){ /*output:当前的数组 first:现在要填第几个位置 len:数组长度(固定不变) i:用来遍历,把后面的数字一个个换到 first 位置*/ //填完了 if(first == len){ res.emplace_back(output);//把结果存入 return; } for(int i = first;i< len;i++){ //动态维护数组 swap(output[i],output[first]); //继续递归填下一个数 backtrack(res,output,first+1,len); //撤销操作 swap(output[i],output[first]); } } vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> res; backtrack(res,nums,0,(int)nums.size()); return res; } };
http://www.jsqmd.com/news/900480/

相关文章:

  • 基于可靠性的直接Turbo译码器RCODD的FPGA实现与优化
  • 技术笔记 | 解析SQR-PR300管道机器人
  • 2026年零基础适配!新手友好型AI自动化测试工具测评
  • MSP430F5529新手避坑指南:CCS导入driverlib库报错?手把手教你搞定环境搭建
  • 老工控机升级记:Win7 64位下搞定WinCC 7.0 SP3与PC Access SP6通讯(附完整避坑清单)
  • 科创50、科创100与科创200的底层逻辑重构
  • 天龙八部单机版GM工具终极指南:5分钟快速掌握游戏数据管理
  • SPA如何被AI正确引用:从SSR到结构化数据的实战指南
  • Claude Code 替代方案探索,利用聚合平台获取更稳定高效的编程辅助
  • 量子纠错码与ZSZ码的创新应用
  • 从CentOS 8.5 Minimal到开发环境:安装后必做的10件事(配置yum源、SSH、防火墙)
  • 基于三轴加速度计的塑料水管泄漏振动检测技术全解析
  • ANSYS Workbench螺栓连接仿真避坑指南:从Beam连接到预紧力锁死,一个案例讲透
  • 共模干扰和差模干扰,硬件EMC整改的核心根基
  • 2026年哈尔滨消防设施操作员培训推荐榜:消控证/监控维保/中级消防证/消防上岗证深度解析与避坑指南 - 品牌企业推荐师(官方)
  • 观察使用Taotoken的Token Plan套餐后月度账单的变化
  • 千问 LeetCode 2781. 最长合法子字符串的长度 JavaScript实现
  • 别再死记公式了!用Python的NumPy和Pandas实战理解样本均值、方差与中心矩
  • 基于 HarmonyOS 6.0 的日程备忘应用页面构建:深色主题与数据看板设计详解
  • CPT Markets:从账户流程看服务细节与效率
  • 从CentOS Stream 8的坑说起:一次GitLab SSH密钥认证失败的完整排错实录
  • 告别Keil!在Ubuntu 20.04上用VSCode+GCC玩转国产HC32L110单片机
  • IR/EM:芯片性能与可靠性的隐形杀手
  • Qwen模型 Max LeetCode 2790. 长度递增组的最大数目 TypeScript实现
  • 2026年当前武汉专业复印纸公司深度解析与选择指南 - 2026年企业资讯
  • ManySpeech-CLI:开箱即用的本地命令行语音识别工具
  • AI工具集:本地Node基于云端AI模型使用Stdio封装自定义MCP服务
  • 基于断言与故障分析的RTL级近似计算自动化探索方法
  • 为什么你的ChatGPT健身计划总失败?运动生理学博士揭穿5大AI认知盲区,附可立即复用的Prompt黄金模板
  • Linux内核开发者视角:深入SMMUv3驱动,手把手拆解dma_map_sg()的IOVA连续映射魔法