news 2026/4/3 7:15:35

力扣 “两数之和” 最优解:哈希表 O (n) 时间复杂度实现详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣 “两数之和” 最优解:哈希表 O (n) 时间复杂度实现详解

大家好,今天来讲解力扣经典入门题「两数之和」,分享如何用哈希表实现时间复杂度 O (n) 的高效解法。

一、题目回顾

给定整数数组nums和目标值target,找出数组中和为 target 的两个整数,返回它们的下标。

  • 假设输入只有一个答案
  • 不能使用同一个元素两次
二、暴力解法的问题

最直观的思路是双重循环遍历数组(时间 O (n²)),但数据量大时效率很低。

三、哈希表优化解法(我的代码)

利用哈希表存储 “数值 - 下标”,遍历数组时直接查找target - 当前数是否存在,实现一次遍历完成查找:

class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> map=new HashMap<>(); // 遍历数组 for(int i=0;i<nums.length;i++){ // 计算需要找的互补数 int complement = target - nums[i]; // 若互补数已在哈希表中,直接返回下标 if(map.containsKey(complement)){ return new int[]{map.get(complement),i}; } // 否则将当前数和下标存入哈希表 map.put(nums[i],i); } // 题目保证有解,这里仅为语法要求 return new int[0]; } }
四、代码逻辑拆解
  1. 初始化哈希表HashMap用来存已经遍历过的元素(键是数值,值是下标)。
  2. 遍历数组
    • 计算当前数的互补数complement = target - nums[i]
    • 检查哈希表中是否有这个互补数:
      • 有 → 直接返回 “互补数的下标” 和 “当前下标”。
      • 没有 → 把当前数和下标存入哈希表,继续遍历。
  3. 返回结果:题目保证有解,所以循环内一定会 return。
五、复杂度分析
  • 时间复杂度:O (n)(仅遍历一次数组,哈希表查找是 O (1))。
  • 空间复杂度:O (n)(最坏情况需要存储 n-1 个元素到哈希表)。

这个解法是「两数之和」的最优解之一,既简洁又高效,非常适合入门学习哈希表的应用~

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

springboot+jspm海关通关辅助管理系统_aw930v86

目录 已开发项目效果实现截图开发技术介绍系统开发工具&#xff1a; 核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式…

作者头像 李华
网站建设 2026/4/3 3:50:40

直接上干货吧,搞过工控的都懂这种现场调试的酸爽。今天聊个真实案例——用三菱FX3U的485BD板子调台达VFD-M变频器,从接线到通讯协议全流程拆解

三菱FX3U与台达VFD-M两台变频器485BD板通讯案例&#xff0c;有教学&#xff0c;有注释&#xff0c;三菱Fx3U485-BD板.有频率设定&#xff0c;电流输出&#xff0c;正转反转停止&#xff0c;运行状态。先看硬件接线&#xff0c;485通讯线不是随便拧的。BD板的SDA接变频器S&#…

作者头像 李华
网站建设 2026/4/2 22:47:46

大厂射频芯片CC2500反向电路探索

大厂射频芯片CC2500反向电路 学习方法是&#xff1a;可以直接查看里面的电路结构&#xff0c;还有管子的宽长比参数等。 拿到原理图之后需要自己换成自己所持有的PDK就可以跑仿真了&#xff0c;国内大部分公司都是这样设计芯片产品的&#xff0c;参考价值非常大&#xff0c;整个…

作者头像 李华
网站建设 2026/4/2 17:36:15

软件过程:博客3

从提问到自答&#xff1a;一次软件工程课程的回顾与反思 &#xff08;本文是对我在学期初所写博客的回顾与回应。第一次博客链接&#xff1a;https://blog.csdn.net/qq_42966458?spm1000.2115.3001.10640&#xff09; 一、回看学期初的提问&#xff1a;我现在能回答它们了吗&a…

作者头像 李华