上海公司查询网站烟台做外贸网站

张小明 2026/1/8 15:07:33
上海公司查询网站,烟台做外贸网站,常见网站架构,建设环境竣工验收网站输入#xff1a;nums [4,4,3,2,1] 输出#xff1a;[[4,4]]注意点此题目的集合是无序的#xff0c;并且要求同一层之间的去重#xff0c;因此和之前有序的同一层去重#xff08;used数组#xff09;不同#xff0c;千万不能混淆。此题还需要对保证输出的组合是有序的nums [4,4,3,2,1]输出[[4,4]]注意点此题目的集合是无序的并且要求同一层之间的去重因此和之前有序的同一层去重used数组不同千万不能混淆。此题还需要对保证输出的组合是有序的因此怎么保证path是有序的。思路无序集合的树层之间去重可以使用unordered_set,记录每一层出现过的元素在for循环之前定义一个for循环是一层因此要在for循环之前定义。并且每一层都单独需要一个unorered_set来记录每一层是否重复因此不需要对unordered_set进行回溯。要保证有序就是要保证正在访问的元素nums[i] path数组中最后一个元素path.back可以表示最后一个元素。但是使用back要保证nums数组不能为空。代码回溯三部曲参数void backtracking(const vectorint nums, int startIndex)终止条件其实也可以不需要终止条件因为递归会一直遍历一直寻找合适的path即走完所有的for循环自动停止。if (path.size() 1) { result.push_back(path); } // 终止条件2如果路径长度等于原数组长度不再继续虽然这种情况很少 if (path.size() nums.size()) return;单层循环逻辑为什么unordered_set创建的位置在for循环之前为什么unordered_set不需要回溯nums.back使用的前提为什么if条件里面的剪枝操作是或的关系为什么是continue而不是break// 关键unordered_set用于记录本层元素是否重复使用 // 注意这个uset的生命周期只在本层递归中每次进入新的递归层都会重新定义 unordered_setint uset; // 遍历从startIndex开始的所有可能选择 for (int i startIndex; i nums.size(); i ) { // 剪枝条件1如果当前元素小于路径最后一个元素跳过不满足递增 // 注意需要先检查path是否为空否则path.back()会出错 // 剪枝条件2如果当前元素在本层已经使用过跳过去重 // 注意这里的去重是针对同一递归层不是针对整个递归树 if ((!path.empty() nums[i] path.back()) || uset.find(nums[i]) ! uset.end()) continue; uset.insert(nums[i]); path.push_back(nums[i]); // 递归从i1开始继续寻找注意是i1不是i因为不能重复使用同一索引的元素 backtracking(nums, i 1); path.pop_back(); // 注意uset不需要撤销因为它在栈上每次递归会重新创建 }整体代码class Solution { private: vectorvectorint result; // 存储所有递增子序列的结果 vectorint path; // 存储当前正在构建的递增子序列 // 回溯函数寻找所有递增子序列 // nums: 输入数组 // startIndex: 当前递归开始选择的起始索引 void backtracking(const vectorint nums, int startIndex) { // 终止条件1当路径长度大于等于2时保存当前递增子序列 // 题目要求子序列长度至少为2 if (path.size() 1) { result.push_back(path); } // 终止条件2如果路径长度等于原数组长度不再继续虽然这种情况很少 if (path.size() nums.size()) return; // 关键unordered_set用于记录本层元素是否重复使用 // 注意这个uset的生命周期只在本层递归中每次进入新的递归层都会重新定义 unordered_setint uset; // 遍历从startIndex开始的所有可能选择 for (int i startIndex; i nums.size(); i ) { // 剪枝条件1如果当前元素小于路径最后一个元素跳过不满足递增 // 注意需要先检查path是否为空否则path.back()会出错 // 剪枝条件2如果当前元素在本层已经使用过跳过去重 // 注意这里的去重是针对同一递归层不是针对整个递归树 if ((!path.empty() nums[i] path.back()) || uset.find(nums[i]) ! uset.end()) continue; uset.insert(nums[i]); path.push_back(nums[i]); // 递归从i1开始继续寻找注意是i1不是i因为不能重复使用同一索引的元素 backtracking(nums, i 1); path.pop_back(); // 注意uset不需要撤销因为它在栈上每次递归会重新创建 } } public: vectorvectorint findSubsequences(vectorint nums) { result.clear(); path.clear(); backtracking(nums, 0); return result; } };
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设 源代码归属分享类网站源码

🤯 还在对着论文空白页抓耳挠腮?选题卡壳、文献杂乱、逻辑崩塌、查重飙红,写论文的每一步都像在 “裸奔”,生怕被导师一眼看穿漏洞?醒醒!现在不用再硬扛了!宏智树 AI 就像一位 “学术铠甲锻造师…

张小明 2026/1/6 21:15:35 网站建设

完成网站的建设工作总结做网站除了dw

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个AI辅助的U盘启动盘制作工具,功能包括:1.自动检测插入的U盘型号和容量,推荐最佳制作方案;2.智能分析ISO文件结构&#xff0c…

张小明 2026/1/6 21:14:31 网站建设

东阳网站建设报价建设网站重庆

当企业还在为部署视觉AI系统的高昂硬件成本发愁时,一项技术突破正在悄然改变游戏规则。传统多模态模型动辄需要24GB以上显存的限制,如今被压缩到了消费级显卡就能承载的规模。这不仅仅是一次技术优化,更是多模态AI普及化的关键转折点。 【免费…

张小明 2026/1/6 21:13:59 网站建设

php网站模板带后台医疗培训网站建设

在高原、极地、海上或冬季严寒地区进行气象或环境监测,设备能否抗住冰冻考验是项目成败的关键。中企深刻理解这一挑战,并在FST200-207抗冰冻型超声波风速风向传感器上给出了专业的解决方案。 传感器的抗冰冻能力并非简单的附加功能,而是系统…

张小明 2026/1/6 21:12:55 网站建设

山西省煤矿建设协会网站net网站开发的步骤txt

Photoprism AI照片管理终极指南:从混乱到有序的完整解决方案 【免费下载链接】photoprism Photoprism是一个现代的照片管理和分享应用,利用人工智能技术自动分类、标签、搜索图片,还提供了Web界面和移动端支持,方便用户存储和展示…

张小明 2026/1/6 21:12:23 网站建设

网站推广的6个方法是什么南通医院网站建设方案

YOLOv8 Timeout超时重试策略在网络不稳定时的应用 在智能视觉系统日益普及的今天,一个看似简单的模型加载命令——model YOLO("yolov8n.pt"),却可能因为一次短暂的网络抖动而彻底失败。这种“脆弱性”在实验室环境中或许可以忽略,…

张小明 2026/1/6 21:11:51 网站建设