news 2026/10/15 19:14:21

力扣100题——1.两数之和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣100题——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]

提示:

  • 2 <= nums.length <= 104

  • -109 <= nums[i] <= 109

  • -109 <= target <= 109

  • 只会存在一个有效答案

进阶:你可以想出一个时间复杂度小于O(n2)的算法吗?

使用哈希函数解决问题

用哈希表来解决复杂度为o(n), c++语言自带哈希函数。

2.代码:
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { // vector动态数组,nums定义为动态数组可以使用size函数 unordered_map<int,int> seen; //key:数字, value:下标值 seen初始为空 for(int i=0;i<nums.size();i++){ int need=target-nums[i]; auto it =seen.find(need); if(it!=seen.end()){ //seen.end()查找失败标记 return {it->second,i}; } seen[nums[i]]=i; //查找失败则将该数据存入seen中 } return {}; } };
3.具体解析:

auto it = seen.find(need);`

①seen.find(need)

seen是unordered_map<int,int>(哈希表)。.find(键):在哈希表里查找 key = need 这个数。

返回值:

  • 如果找到了 → 返回一个迭代器 (iterator),指向这个键‑值对

  • 如果找不到 → 返回seen.end(),代表「末尾空位置,没找到」

② 什么是迭代器it

你可以把迭代器it理解成指向 map 里面某一条记录的指针。 一条 map 记录是一对:pair<int, int>

  • it->first→ key(存的数字)

  • it->second→ value(数字对应的下标)

③ 为什么用auto?

find返回的类型很长,完整写出来是:

unordered_map<int,int>::iterator it = seen.find(need);

auto让编译器自动推导左边变量的类型,不用你手写一长串迭代器类型。 效果完全等价,只是简写。

机试写代码强烈推荐 auto,省时,不容易写错类型。


return {it->second, i};的本质

这个{ ... }叫做列表初始化(uniform‑initialization)作用:临时构造一个 vector<int> 对象,把两个整数放进去。

它等价于:

vector<int> temp;

temp.push_back(it->second);

temp.push_back(i);

return temp;

① 值传递(不带 &):vector<int> nums

vector<int> twoSum(vector<int> nums, int target)

程序会把外面整个 vector 完完整整复制一份,在函数内部生成一个全新、独立的数组。

  • 两块不同内存

  • 修改函数里 nums 不会影响外面原数组

  • 缺点:数组很大时复制非常慢,浪费内存

② 引用传递(带 &):vector<int>& nums

vector<int> twoSum(vector<int>& nums, int target)

不拷贝!函数内 nums 只是原数组的外号。

  • 只有一块内存

  • nums 和原数组就是同一个东西

  • 修改 nums 会直接改到外面原始数组


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 19:14:02

DBCO-替加环素DBCO-Tigecycline二苯并环辛炔-替加环素 SPAAC 无铜点击探针

DBCO-替加环素是一种将无铜点击化学基团&#xff08;DBCO&#xff09; 与替加环素&#xff08;Tigecycline&#xff09; 共价偶联的功能化甘氨酰环素类抗生素探针。一、核心特性无铜点击化学活性DBCO端可在无需铜催化剂的条件下与叠氮基团发生SPAAC反应&#xff0c;形成稳定的三…

作者头像 李华
网站建设 2026/10/15 19:12:49

谷歌SEO外贸推广怎么做?从建站到询盘转化的完整优化路径

做外贸的企业越来越多&#xff0c;但很多老板发现一个尴尬的问题&#xff1a;网站建好了&#xff0c;投了钱&#xff0c;海外客户却根本搜不到。Google作为全球最大的流量入口&#xff0c;如果搜不到你的网站&#xff0c;相当于在海外市场“隐身”。那么&#xff0c;外贸网站优…

作者头像 李华
网站建设 2026/10/15 19:12:46

AI 产品用户越多,为什么反而可能越亏?

从 Stripe 的 6 种定价模式&#xff0c;看懂 AI 产品怎么赚钱 想象一下&#xff0c;你负责的 AI 产品终于火了。 用户量不断增长&#xff0c;使用频率持续提高&#xff0c;老板却突然问你&#xff1a; “用户越来越多&#xff0c;我们怎么反而赚不到钱&#xff1f;” 你打开…

作者头像 李华
网站建设 2026/10/15 19:12:42

使用 SGLang 部署 MiniMax-H3

使用 SGLang 部署 MiniMax-H3 本文记录在单机 NVIDIA GPU 服务器上使用 SGLang Diffusion 部署 MiniMax-H3 的过程&#xff0c;包括模型检查、运行环境、服务配置、Web 页面、Spectrum 加速和常见问题。 一、环境与目录 MiniMax-H3 是联合生成视频和音频的大型模型。完整权重…

作者头像 李华
网站建设 2026/10/15 19:12:41

广告联盟 VS 联盟营销怎么选?推广模式区别与品牌选择指南

对于正在寻找增长渠道的企业来说&#xff0c;流量获取方式正在发生变化。过去&#xff0c;品牌主要依靠搜索广告、社交广告等付费渠道获取用户&#xff0c;但随着竞争加剧&#xff0c;单纯增加广告预算并不一定能带来持续增长。企业开始关注更多效果导向的推广方式&#xff0c;…

作者头像 李华
网站建设 2026/10/15 19:11:51

入门 Traefik 系列——用 TaoToken 统一 Key 调试路由配置与 IngressRoute

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华