广州市从化区住房和建设局网站风信子 网站建设

张小明 2026/3/12 17:44:21
广州市从化区住房和建设局网站,风信子 网站建设,顺风顺水的公司名字,集团网站建设的好处核心思路回顾通过哈希表存储「已遍历元素值 → 下标」的映射#xff0c;遍历数组时计算当前元素的 “补数”#xff08;目标值 - 当前值#xff09;#xff0c;若补数存在于哈希表中#xff0c;则直接返回结果#xff1b;若不存在#xff0c;将当前元素存入哈希表#…核心思路回顾通过哈希表存储「已遍历元素值 → 下标」的映射遍历数组时计算当前元素的 “补数”目标值 - 当前值若补数存在于哈希表中则直接返回结果若不存在将当前元素存入哈希表继续遍历。详细解题步骤假设输入为vectorint nums和int target最终返回vectorint类型的下标数组具体步骤如下步骤 1引入必要头文件 命名空间C 中需要引入vector存储数组和unordered_map哈希表的头文件并用using namespace std;简化代码也可显式写std::cpp运行#include vector // 用于存储数组和返回结果 #include unordered_map // 哈希表容器 using namespace std;步骤 2定义函数 初始化哈希表函数返回值为vectorint参数为数组引用nums和目标值target创建空的unordered_map键为元素值int值为元素下标intcpp运行vectorint twoSum(vectorint nums, int target) { // 初始化哈希表键元素值值元素下标 unordered_mapint, int hashMap;步骤 3遍历数组逐个检查补数使用for循环遍历数组i为当前元素下标nums[i]为当前元素值计算补数complement target - nums[i]需要找到的另一个数检查补数是否在哈希表中若存在返回哈希表中补数对应的下标 当前下标i若不存在将当前元素值和下标存入哈希表继续遍历。代码实现cpp运行// 遍历数组i为下标nums[i]为当前元素 for (int i 0; i nums.size(); i) { int complement target - nums[i]; // 计算补数 // 检查补数是否在哈希表中find返回迭代器end()表示未找到 if (hashMap.find(complement) ! hashMap.end()) { // 找到则返回结果补数下标 当前下标 return {hashMap[complement], i}; } // 未找到则将当前元素和下标存入哈希表 hashMap[nums[i]] i; }步骤 4兜底返回语法要求题目保证输入必有唯一答案因此此处仅为满足函数语法要求返回空数组cpp运行// 题目保证有解此处仅兜底 return {}; }步骤 5测试函数可选编写main函数测试示例用例验证结果正确性cpp运行#include iostream // 用于输出结果 int main() { // 示例1nums [2,7,11,15], target 9 vectorint nums1 {2, 7, 11, 15}; int target1 9; vectorint res1 twoSum(nums1, target1); cout 示例1结果[ res1[0] , res1[1] ] endl; // 示例2nums [3,2,4], target 6 vectorint nums2 {3, 2, 4}; int target2 6; vectorint res2 twoSum(nums2, target2); cout 示例2结果[ res2[0] , res2[1] ] endl; // 示例3nums [3,3], target 6 vectorint nums3 {3, 3}; int target3 6; vectorint res3 twoSum(nums3, target3); cout 示例3结果[ res3[0] , res3[1] ] endl; return 0; }关键步骤解析以示例 2 为例nums [3,2,4], target 6遍历次数下标 i当前值 nums [i]补数 complement哈希表状态存入前检查结果哈希表状态存入后1036-33空未找到补数{3:0}2126-24{3:0}未找到补数{3:0, 2:1}3246-42{3:0, 2:1}找到补数 2下标 1无需存入最终返回[1, 2]符合示例 2 结果。暴力解法的解题步骤对比参考若用暴力法步骤如下时间复杂度 O (n²)外层循环遍历每个元素下标i从 0 到nums.size()-1内层循环遍历i之后的元素下标j从i1到nums.size()-1检查nums[i] nums[j] target若满足则返回{i, j}题目保证有解无需处理无结果情况。暴力法代码cpp运行vectorint twoSum(vectorint nums, int target) { int n nums.size(); for (int i 0; i n; i) { for (int j i 1; j n; j) { if (nums[i] nums[j] target) { return {i, j}; } } } return {}; }核心注意点哈希表选择unordered_map是哈希表查找 / 插入平均 O (1)若用map红黑树时间复杂度会升至 O (logn)效率更低避免重复元素先检查补数再存入当前元素确保不会使用同一个元素如示例 3 的 [3,3]返回值C 中直接返回vectorint满足 “返回数组下标” 的要求。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站都要icp备案吗附近装修设计公司

Unix 系统的缺陷与应对策略 1. 文件名扩展的问题 Unix 系统中,每个程序通常是独立运行的,但文件名扩展是个例外。Unix 外壳为文件组命名提供了一种简写方式,外壳会对其进行扩展,生成一个文件列表并传递给相应的实用程序。例如,在一个包含文件 A、B 和 C 的目录中,若要删…

张小明 2026/3/5 4:39:51 网站建设

canvas效果网站wordpress官网密码

第一章:Q# 程序的 VSCode 单元测试概述在量子计算开发中,确保 Q# 代码的正确性至关重要。Visual Studio Code(VSCode)结合 Quantum Development Kit(QDK)为 Q# 程序提供了完整的单元测试支持,使…

张小明 2026/3/5 4:49:23 网站建设

郑州做网站公司有多少钱自建网站有哪些

一、迭代核心:GPT-5.2 的技术跃迁与文档价值定位 作为 OpenAI 生态 GPT-5 系列的关键迭代产品,GPT-5.2 实现从“可用”到“好用”的质性飞跃,在专业方案输出、复杂代码构建、超长文本解析等核心场景展现颠覆性能力。相较于前代 GPT-5.1&#…

张小明 2026/3/5 4:50:38 网站建设

婚纱定制网站哪个好好听的公司名字

为什么说这个App Inventor扩展插件集合是开发者的终极利器? 【免费下载链接】AppInventor扩展插件集合 本仓库提供了一个包含20多种App Inventor(AI2)扩展插件的资源文件,这些插件已经过中文整理(部分)。资…

张小明 2026/3/5 5:23:29 网站建设

天津提升专业关键词排名电子商务网站怎么做seo

ConvNeXt语义分割实战指南:构建高效图像理解系统 【免费下载链接】ConvNeXt Code release for ConvNeXt model 项目地址: https://gitcode.com/gh_mirrors/co/ConvNeXt ConvNeXt作为一种面向2020年代的新型纯卷积网络架构,在语义分割任务中展现了…

张小明 2026/3/5 4:51:09 网站建设

免费移动网站建站好的域名推荐

策略模式详解什么是策略模式?核心机制现实类比策略模式的优势典型应用场景1. 电商促销系统2. 支付系统实际应用示例电商订单处理图像处理应用策略模式详解 什么是策略模式? 策略模式是一种行为设计模式,其核心思想是:定义一系列…

张小明 2026/3/5 4:39:57 网站建设