LeetCode Hot100(1.两数之和)
1.两数之和题目给定一个整数数组nums和一个整数目标值target请你在该数组中找出和为目标值target的那两个整数并返回它们的数组下标。你可以假设每种输入只会对应一个答案并且你不能使用两次相同的元素。你可以按任意顺序返回答案。示例 1输入nums [2,7,11,15], target 9输出[0,1]解释因为 nums[0] nums[1] 9 返回 [0, 1] 。示例 2输入nums [3,2,4], target 6输出[1,2]示例 3输入nums [3,3], target 6输出[0,1]解法一双for循环暴力查找代码class Solution { public: vectorint twoSum(vectorint nums, int target) { for (int i 0; i nums.size(); i) { int nums2 target - nums[i]; for(int ji1;jnums.size();j){ if(nums[j]nums2){ return{i,j}; } } } return{}; } };注意1.vectorint nums引用传递含义传递的是原vector的引用别名不会创建新的副本。优点非常高效节省了拷贝数据所需的时间和内存。2.vectorint nums值传递含义传递的是原vector的完整副本。优点在函数内部修改nums不会影响外部原始数据。缺点每次调用函数都需要复制整个vector。如果数据量大会消耗大量时间和内存在 LeetCode 中极易导致超时Time Limit Exceeded。注意在函数内部对nums的任何修改都会直接改变外部的原始数据。解法二哈希查找哈希表在 C 中std::unordered_map哈希表提供了许多实用的成员函数。以下是在刷题时最常用的几类函数unordered_mapint, int hashtable1. 查找与访问count(key)返回key在 map 中出现的次数。因为 key 是唯一的所以返回值只能是0不存在或1存在。常用于判断某个 key 是否存在。find(key)返回一个迭代器。如果找到指向该元素如果没找到指向end()。at(key)返回 key 对应的 value。如果 key 不存在会抛出异常比直接用[]访问更安全。2. 插入与修改map[key] value如果 key 存在则修改其 value如果 key 不存在则插入新的键值对。这是“两数之和”中最常用的写法。insert({key, value})或emplace(key, value)插入键值对。注意如果 key 已存在它们不会覆盖原有的 value这与[]的行为不同。3. 删除erase(key)删除指定 key 的键值对。4. 状态与容量size()返回 map 中当前有多少个键值对。empty()判断 map 是否为空返回true或false。clear()清空 map 中的所有元素。迭代器在 C 中迭代器Iterator可以理解为一种“智能指针”。它的主要作用是提供一种统一的方式来遍历和访问容器如vector、unordered_map中的元素而不需要暴露容器内部的底层数据结构。1. 迭代器是什么你可以把容器想象成一排储物柜而迭代器就是指向某个具体储物柜的“指针”。通过迭代器你可以找到当前指向的储物柜里的内容。你也可以让迭代器移动例如it指向下一个储物柜。2. 在unordered_map中迭代器指向什么对于unordered_mapint, int它的每一个元素都是一个键值对Key-Value pair。在 C 底层这个键值对被封装在一个std::pair结构中。因此find()返回的迭代器实际上是指向了这个pair结构。3. 如何通过迭代器访问元素既然迭代器指向的是一个pair你就可以通过箭头运算符-来分别获取 Key 和 Valueit-first获取 Key键。it-second获取 Value值。代码class Solution { public: vectorint twoSum(vectorint nums, int target) { unordered_mapint,inthashtable; for(int i0;inums.size();i){ auto it hashtable.find(target-nums[i]); if(it!hashtable.end()){ return{i,it-second}; } else{ hashtable[nums[i]]i; } } return{}; } };需要注意的是在本题中因为要寻找target-nums[i]在哈希表中是否出现过因此将数组的值作为哈希表的键利用find()能达到快查的效果。

相关新闻

计算机毕业设计之基于ASP.NET的产品进销存系统设计与实现

计算机毕业设计之基于ASP.NET的产品进销存系统设计与实现

产品进销存系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。产品进销存系统在流畅性,续航能力&…

2026/7/24 7:28:36 阅读更多 →
计算机毕业设计之校园快递代领平台

计算机毕业设计之校园快递代领平台

随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于校园快递代领平台当然也不能排除在外,随着网络技术的不断成熟,带动了校园快递代领,它彻底改变了过去传统的管…

2026/7/22 20:14:37 阅读更多 →
别急着上 LangGraph:小团队上线 Agent 前,先算清权限与日志的账

别急着上 LangGraph:小团队上线 Agent 前,先算清权限与日志的账

如果你正准备往大模型方向转,《别急着上LangGraph,先把成本、边界和失败兜底算清楚》这类问题别只看热度。更重要的是判断自己该补哪块能力,以及怎么证明你真的会。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断…

2026/7/21 17:44:12 阅读更多 →

最新新闻

如何快速上手ppInk:Windows屏幕标注的终极指南

如何快速上手ppInk:Windows屏幕标注的终极指南

如何快速上手ppInk:Windows屏幕标注的终极指南 【免费下载链接】ppInk Fork from Gink 项目地址: https://gitcode.com/gh_mirrors/pp/ppInk 你是否需要在演示、教学或远程协作时在屏幕上实时标注?ppInk就是为你量身打造的免费开源屏幕标注工具。…

2026/7/25 10:47:19 阅读更多 →
AI对话《易经》:传统智慧与现代技术的融合

AI对话《易经》:传统智慧与现代技术的融合

1. 项目背景与核心价值 这个项目尝试做了一件很有意思的事情——用现代AI技术去对话中国最古老的智慧典籍《易经》。作为一部流传三千多年的经典,《易经》的核心在于"变易"思想,而AI的本质也是通过算法不断学习和演化。这种跨越时空的思想碰撞…

2026/7/25 10:47:19 阅读更多 →
基于YOLOv5的QR码深度学习识别方案与实践

基于YOLOv5的QR码深度学习识别方案与实践

1. 项目背景与核心价值 QR码作为移动互联网时代最普及的二维条码技术,已经渗透到支付、物流、身份认证等各个领域。传统扫码方案依赖专用硬件设备或特定角度的图像采集,而基于深度学习的视觉识别方案正在打破这些限制。 去年我在一个工业质检项目中&…

2026/7/25 10:47:19 阅读更多 →
学术论文降AI率工具:原理与应用指南

学术论文降AI率工具:原理与应用指南

1. 项目背景与核心价值作为一名在学术写作领域深耕多年的研究者,我深刻理解论文创作者面临的痛点。近年来随着AI写作工具的普及,一个全新的问题浮出水面——如何确保学术作品的原创性不被AI检测工具误判?这正是"千笔专业降AI率智能体&qu…

2026/7/25 10:47:19 阅读更多 →
国家规范、标准对幕墙防雷的具体要求

国家规范、标准对幕墙防雷的具体要求

国家规范、标准对幕墙防雷的具体要求 JGJ102-2003《玻璃幕墙工程技术规范》第4.4.13条规定:“玻璃幕墙的防雷设计应符合国家现行标准《建筑物防雷设计规范》GB50057和《民用建筑电气设计规范》JGJ16的有关规定。幕墙的金属框架应与主体结构的防雷体系可靠连接,连接部位应清除…

2026/7/25 10:47:19 阅读更多 →
深度强化学习实战指南:从PPO、DQN算法原理到代码实现与调参

深度强化学习实战指南:从PPO、DQN算法原理到代码实现与调参

1. 这门课到底值不值得花时间?先看它解决了什么核心问题深度强化学习听起来很酷,但很多人卡在第一步:理论公式看不懂,代码跑不通,学完不知道能干什么。这门课程最直接的价值,就是试图解决这个“从理论到落地…

2026/7/25 10:46:19 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻