1.两数之和 - 力扣(Leetcode)
题目给定一个整数数组 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(n2)。进阶要求时间复杂度小于 O(n2)可以使用哈希表将查找时间降到 O(1)。具体做法1. 遍历数组 nums对于当前元素 nums[i]计算它需要的配对值 complement target - nums[i]。2. 在哈希表中查找 complement 是否存在(1). 如果存在说明之前已经遍历过一个数它与当前数之和为 target直接返回这两个数的下标。(2). 如果不存在将当前元素 nums[i] 和它的下标 i 存入哈希表继续遍历。3. 因为题目保证有且仅有一个有效答案所以一定能在遍历过程中找到。由于 C 语言没有内置哈希表我们需要手写一个简单的哈希表。这里使用开放寻址法线性探测用数组存储键值对。解题过程以 nums [2, 7, 11, 15], target 9 为例初始化哈希表为空。遍历到 i 0nums[0] 2complement 9 - 2 7哈希表中没有 7将 (2, 0) 存入哈希表。遍历到 i 1nums[1] 7complement 9 - 7 2在哈希表中找到键 2对应下标 0返回 [0, 1]。复杂度时间复杂度O(n)遍历数组一次每个元素在哈希表中的查找和插入平均为 O(1)因此总时间为O(n)。空间复杂度O(n)哈希表最多存储 n 个元素需要 O(n) 的额外空间。Code#includestdlib.h#includelimits.h// 哈希表节点存储键数值和值下标typedefstruct{intkey;intval;}HashNode;// 用 INT_MIN 表示哈希表位置为空#defineEMPTYINT_MIN/** * 两数之和哈希表法 * * param nums 整数数组 * param numsSize 数组长度 * param target 目标值 * param returnSize 返回数组的长度固定为 2 * return 返回两个下标组成的数组若未找到返回 NULL */int*twoSum(int*nums,intnumsSize,inttarget,int*returnSize){// 哈希表大小取 2 * numsSize保证装载因子小于 0.5减少冲突inthashSizenumsSize*21;HashNode*hash(HashNode*)malloc(sizeof(HashNode)*hashSize);if(!hash){*returnSize0;returnNULL;}// 初始化哈希表所有位置标记为空for(inti0;ihashSize;i){hash[i].keyEMPTY;hash[i].val-1;}int*result(int*)malloc(sizeof(int)*2);if(!result){free(hash);*returnSize0;returnNULL;}for(inti0;inumsSize;i){intcomplementtarget-nums[i];// 计算 complement 的哈希位置处理负数intindex((complement%hashSize)hashSize)%hashSize;// 线性探测查找 complementwhile(hash[index].key!EMPTY){if(hash[index].keycomplement){// 找到了配对的数返回两个下标result[0]hash[index].val;result[1]i;*returnSize2;free(hash);returnresult;}index(index1)%hashSize;}// 哈希表中没有 complement将当前元素插入哈希表intpos((nums[i]%hashSize)hashSize)%hashSize;while(hash[pos].key!EMPTY){pos(pos1)%hashSize;}hash[pos].keynums[i];hash[pos].vali;}// 理论上不会执行到这里因为题目保证有解free(hash);free(result);*returnSize0;returnNULL;}作者一清风月一流年链接https://leetcode.cn/problems/two-sum/solutions/4039193/1-liang-shu-zhi-he-by-yi-qing-feng-yue-y-g935/来源力扣LeetCode著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。

相关新闻

基于PCA9422 PMIC与STM32F401RB的锂电池供电与低功耗电源管理实战

基于PCA9422 PMIC与STM32F401RB的锂电池供电与低功耗电源管理实战

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

2026/10/10 2:55:07 阅读更多 →
2026年程序员必学大模型:小白也能掌握的AI应用开发,收藏学习路线!

2026年程序员必学大模型:小白也能掌握的AI应用开发,收藏学习路线!

文章指出,2026年AI大模型相关岗位需求暴涨,薪资远超传统后端岗位。针对程序员学习痛点,文章强调AI应用开发无需精通深度学习,只需调用API并搭建业务系统。文章提供了零基础必备工具环境、四个阶段的学习路线(Prompt工程…

2026/10/10 2:55:07 阅读更多 →
LLM端侧部署-把大模型塞进SA8397车机 NPU

LLM端侧部署-把大模型塞进SA8397车机 NPU

一篇讲清"训练好的模型是怎么变成车机芯片上每秒上千次推理的二进制"的入门长文 —— 整体流程 架构 原理 概念 实现细节 在服务器上训练好的模型,车机芯片根本"看不懂"。它需要经过一次"翻译重新排版"——这就是 QNN 编译链。本…

2026/10/10 2:55:07 阅读更多 →

最新新闻

MATLAB联合CST建模:超表面仿真自动化工作流实战

MATLAB联合CST建模:超表面仿真自动化工作流实战

最近不少做超表面的同学都在折腾CST仿真,尤其是想把MATLAB联合CST建模这条路彻底走通,用来处理超透镜、轨道角动量、吸收器、极化转换器、EIT(类电磁诱导透明)这些常见方向。这篇文章不打算讲教科书推导,只写我在真实仿…

2026/10/10 3:48:27 阅读更多 →
PostgreSQL权限管理实战:角色体系、层级授权与行级安全

PostgreSQL权限管理实战:角色体系、层级授权与行级安全

1. 权限分配这件事,先搞懂 PostgreSQL 的角色体系做数据库运维这些年,我发现一个特别有意思的现象:很多人对 PostgreSQL 的权限管理第一反应是“这不就是 grant 一下嘛”,可真到了线上环境,经常被各种“没权限”“权限…

2026/10/10 3:48:26 阅读更多 →
1996-2024年各省农业总产值无缺失面板数据:从处理到分析完整指南

1996-2024年各省农业总产值无缺失面板数据:从处理到分析完整指南

做农业数据分析的人应该都有过这种经历:想研究各省农业生产的长期变化,打开官方数据库发现要么年份对不上,要么某些省份某几年突然缺了一块,要么当年价格和可比价格混在一起,搞不清谁是谁。最后大量时间花在找数据、拼…

2026/10/10 3:48:26 阅读更多 →
SCSI磁盘实战指南:从协议原理到Linux诊断调优

SCSI磁盘实战指南:从协议原理到Linux诊断调优

1. 项目概述:为什么“SCSI磁盘”这个老词还在工程师的日常对话里反复出现你可能在服务器机房巡检时听到运维同事说“这台存储柜挂了两块SCSI盘,热备没切过去”,也可能在旧系统迁移文档里看到“需兼容SCSI-3 SPI协议的磁盘阵列”,甚…

2026/10/10 3:48:26 阅读更多 →
PostgreSQL自定义函数规范:从命名到性能排查的完整指南

PostgreSQL自定义函数规范:从命名到性能排查的完整指南

1. 为什么自定义函数必须讲规范1.1 从一次线上事故说起先说一个我亲眼见过的教训。某公司的订单系统,早期为了赶业务进度,开发人员在 PostgreSQL 里写自定义函数时完全放飞自我——函数名有的叫get_data、有的叫f_order,参数类型混用 varchar…

2026/10/10 3:48:26 阅读更多 →
PyTorch+LSTM电影评论情感分析实战:从预处理到模型部署

PyTorch+LSTM电影评论情感分析实战:从预处理到模型部署

简介:一份评审分达99分的基于深度学习的电影评论情感分析项目资源包,适合计算机相关专业课程设计、期末大作业及入门实战,重点解决从数据爬取到模型训练演示中缺完整代码、缺数据集、缺文档的常见问题。资源围绕豆瓣短评设计,约5万…

2026/10/10 3:47:26 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/9 6:17:20 阅读更多 →