重练算法(代码随想录版) day25 - 回溯part4

今日刷题量:3
当前刷题总量:107
Easy: 53
Mid: 52
Hard: 2

Day25
常用思想
1.去重如果需要同层去重,可以借助unordered_set记录本层元素是否重复使用,如果范围不大,可以用数组来做哈希提高效率

2.全排列问题也借助used数组记录path里哪些元素用过了,因为每一层除了当前元素的所有其他元素都可以被选择

3.全排列还可以用原地swap法:通过把不同的元素交换到当前固定的位置,再递归生成后续排列,最后再交换回去恢复状态。
核心代码如下,x代表当前固定的元素,分别和其他位置去交换:

点击查看代码
for (int i = x; i < nums.size(); i++) {swap(nums[i], nums[x]);backtrack(nums, x + 1);swap(nums[i], nums[x]);}

4.全排列去重的本质是避免“同一层”重复选择相同数字,而在每一层使用 unordered_set 可以精确控制这一点。
5.set 保证“本层不能重复”,递归保证“不同层可以重复”。

练习题目
491.非递减子序列(mid):https://leetcode.cn/problems/non-decreasing-subsequences/
46.全排列(mid):https://leetcode.cn/problems/permutations/
47.全排列Ⅱ(mid):https://leetcode.cn/problems/permutations-ii/description/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/981192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025-11-29

CF Problem - 1759E - Codeforces(dp好题) 这个问题是找最优方案下,吸收的最大人数 所以,首先排序,从小到大 然后对于每一个点(0~n-1),都计算其不使用或使用药水时的值 贪心思想,如果一旦满足大于a[i],就马上更…

2025 哈尔滨轴承企业品牌知名度调研排名

这份排名由东北装备制造业发展研究中心联合《轴承工业》杂志调研半年而成,覆盖市场表现、技术硬实力、行业认可度三大维度,最终筛选出综合实力前十的企业。一、开篇:藏在机器里的城市心跳 上周去机床厂采风,老技工…

接口测试:JMeter(三)

JSON提取器和正则提取器 非常好!JSON 提取器 和正则表达式提取器 是 JMeter 中最重要、最常用的两个后置处理器,用于关联(Correlation)—— 即从服务器响应中提取数据,供后续请求使用。 核心概念作用:都是从采样…

散列表

有关散列表的真题 平均查找长度[解析] 可以构造得到如下的 HT: 下标 0 1 2 3 4 5 6 关键词 22 43 15 成功时的平均查找长度 = (1+2+3)/3 = 2。[解析] 构造 散列表 只有当遇到关键字为空的地址时才会查找失败,…

腾讯TBDS和Cloudera Data AI CMP 比较的缺陷在哪里?

腾讯TBDS和Cloudera Data AI CMP 比较的缺陷在哪里?腾讯TBDS和Cloud Data AI CMP 比较的缺陷在哪里?腾讯云 TBDS(Tencent Big Data Suite) 与 Cloud Data AI CMP(Cloud Data AI Platform) 的全面、结构化优劣势对…

python获取绝对路径复制文件

python获取绝对路径复制文件import shutil import sys import os def cur_file_dir():path = sys.path[0]if os.path.isdir(path):return pathelif os.path.isfile(path):return os.path.dirname(path) def path(p):re…

Task状态

1 Task task=null;2 private void button1_Click(object sender, EventArgs e)3 {4 task = Task.Factory.StartNew(() =>5 {6 while (true)7 …

实用指南:算法<C++>——二分查找

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 哈尔滨轴承品牌价值TOP10榜单

本次榜单联合黑龙江省轴承工业协会、哈尔滨市制造业创新中心共同制作,数据来源于 2024 年企业年报、第三方检测机构报告及市场调研问卷(样本量 1200 份),从技术硬实力、市场认可度、质量稳定性三大维度构建评估体系…

AI革命中的开源NLP工具与技术实践

本期播客探讨了工业级自然语言处理工具spaCy和标注工具Prodigy的应用实践,讨论了大型语言模型与专用模型的平衡、人类在环蒸馏技术、NLP领域的模块化与隐私挑战,以及AI监管对创新的影响。第34集:AI革命不会被垄断 H…

Python 潮流周刊#129:Pydantic 还能做些什么?

本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 温馨提…

【论术】: 响应式布局——flex:1与calc的区别

莫说相公痴,更有痴似相公者。 —— 张岱《湖心亭看雪》 是什么 calc: 是css3新增的用于计算容器数值的计算函数,基于数学角度计算一个元素的数值 (flex:1):是flex布局对于剩余空间的声明,表示占据所有剩余空间 关联…

Git 误操作恢复指南:回退`reset --hard` 和 `push -f`

场景:误操作的后果 发生的操作(错误)您将本地分支回退到较旧的提交:git reset --hard [旧哈希 A] 您将此回退状态强制同步到远程仓库:git push origin -f [分支名]结果和风险本地: 提交 B 及之后的历史记录看似“…

详细介绍:算法 - 差分

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

《程序员修炼之道:从小工到专家》观后感第六篇

笔记六:《自动化与工具 ——“自动化一切” 的效率革命》 核心观点:自动化是解放重复劳动的 “生产力工具”,从开发、测试到部署的全流程自动化,能大幅提升团队效能,让开发者聚焦创造性工作。 案例分析:某 SaaS …

Day6-20251129

摘要:本文介绍了JAVA基础语法中的注释使用,包括单行注释(//)、多行注释(/* /)和文档注释(/* */)三种形式。详细说明了在IDEA中创建JAVA项目、模块的基本步骤,以及如何修改注释的显示颜色和样式。通过HelloWorld示例…

详细介绍:反反爬虫实战:手撕某知名网站Webpack加密的JavaScript

详细介绍:反反爬虫实战:手撕某知名网站Webpack加密的JavaScript2025-11-29 19:50 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !im…

《程序员修炼之道:从小工到专家》观后感第五篇

笔记五:《协作与沟通 —— 技术人的 “软技能” 实效修炼》 核心观点:技术人的影响力不仅源于技术深度,更依赖协作沟通的 “软技能”。清晰的文档、高效的代码评审、精准的方案表达,是减少团队摩擦、提升整体效能的…

深入解析:Rust 迭代器的性能优化技巧

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …