当前位置: 首页 > news >正文

力扣 “两数之和” 最优解:哈希表 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 个元素到哈希表)。

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

http://www.gsyq.cn/news/117332.html

相关文章:

  • 基于WEB的高校计算机数据库课程知识图谱系统的设计与实现
  • 2025雅思择校不踩坑!机构综合实力TOP榜祝你选择!! - 速递信息
  • 优化实践:提升 1688 商品详情 API 接口稳定性和数据获取效率
  • TLS网络安全协议巩固知识基础题(2)
  • 聚焦家庭需求:20 万左右新能源 SUV 空间与安全优选车型
  • 数学刷题总结
  • Simulink仿真模型中同步电机的死区补偿与自适应补偿实践
  • 基于微服务器架构的小区物业管理系统的设计与实现
  • scheme中的序列操作
  • 2025年中山可靠的无溶剂环氧涂料批发选哪家,石墨烯涂料/环氧玻璃钢/环氧酚醛/无溶剂环氧涂料/无溶剂环氧涂料设计推荐 - 品牌推荐师
  • 基于微服务器架构的党支部学习活动平台
  • 实用指南:智能网联汽车信息安全深度解析:从UN-R155与GB44495标准到OBD/UDS技术实践
  • AI创意应用 - 起飞吧,气球!
  • 吴恩达深度学习课程四:计算机视觉 第二周:经典网络结构 (三)11卷积与Inception网络
  • 通用 AI · Universal AI 2
  • Product Hunt 每日热榜 | 2025-12-17
  • Agent学习——通过ZENMUX来使用Xiaomi MiMo-V2-Flash(自用)
  • 新手跨境电商实测:Apache 搭站,雷池 WAF 零基础部署
  • es:python:指定索引的mapping和获取mapping
  • 【dz-943】基于单片机的电压表监测仪
  • TikTok Studio创作者工具打不开怎么办?
  • 2025年杭州技术好的公交广告联系方式排行榜单,户外led大屏广告/公交广告/广播电台广告/地铁广告/公交广告品牌推荐排行榜单 - 品牌推荐师
  • 电商网站如何用vue-qrcode实现优惠券分享?
  • 还在问免费音效网站有哪些?这份清单已经帮你筛掉了不靠谱的
  • 对比实测:传统安装vsDocker部署MySQL8的效率差异
  • 分拣机器人推荐,解锁智能分拣新姿势,这些优质机型值得关注
  • 空压空调AI智控的发明专利
  • 【导出】前端 js 导出下载文件时,文件名前后带下划线问题
  • 力控机器人推荐,从原理到选型,解锁柔性生产新可能
  • Java小白必看:5分钟上手MD5加密解密