当前位置: 首页 > 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.cnnetsun.cn/news/113894.html

相关文章:

  • Xiaomi 商城页面布局(部分)
  • FPGA以太网升级程序:便捷qspi Flash升级,具备校验功能,适用于Xilinx 7系列...
  • 运料小车装卸料控制:西门子1200PLC与TP700触摸屏联机仿真博途16
  • S32K311启动过程中,向量表重定向
  • 从蓝图到产线:高效产品信息传递的桥梁建设
  • 时间复杂度
  • 网站建设公司怎么选?2025年网站设计制作公司推荐指南
  • 今天咱们来聊一个挺有意思的优化算法改进——基于透镜成像反向策略的海洋捕食者算法。这个改进版本在原始MPA基础上搞了点新花样,咱们直接上干货看代码实现
  • Gitee:本土化DevOps平台如何重塑中国开发者生态
  • vCenter Server 8.0U3h 新增功能简介
  • Cisco NX-OS 10.6(2)F 发布 - 数据中心网络操作系统
  • Ubuntu24.04无操作卡死,无法唤醒问题以及内核版本切换记录
  • 全场景覆盖・全流程智控:分布式解决方案让多功能厅 “不止于多”
  • 【轨物方案】聚焦锯床设备智能化升级,打造工业互联网新范式
  • 【轨物交流】轨物科技亮相2025高校科技成果交易会
  • cesium加载geotiff的 四种方法
  • 【毕业设计】基于python的运维管理平台的设计与实现
  • 苹果 iOS 开发真正复杂的不是写代码这方面,是证书、构建、上架
  • FSMC-TFTLCD显示实验(5):显示一个字符串的函数传递过程追踪~
  • 基于Android的课程考勤及作业提交系统
  • 飞易通蓝牙与Wi-Fi模块:医疗产品无线连接的全能助手
  • 你的音效素材库该升级了!这个网站的分类细到超出你想象
  • Agent的“话痨”病有救了!微软黑科技教你压缩对话历史,让AI告别失忆,这篇教程太顶了!
  • ARMv7 linux中断路由以及处理
  • 【详解】基于Kubernetes部署Kafka集群
  • AIoT:从万物互联到万物智联的进化之路
  • ERROR in ./node_modules/vue-router/dist/vue-router.mjs 被报错折磨半天?真相竟是……
  • Spring Boot 自动配置的底层实现原理
  • AI如何帮你快速掌握Wireshark端口过滤技巧
  • 手把手教你复现CVE-2023-51767漏洞