两数之和

type
status
date
slug
summary
tags
category
difficulty
icon
password
notion image
题解:
JAVA
C++
这道题目要求在数组中找到两个数的和等于目标值,返回这两个数的下标。解题思路如下:

解题思路

使用哈希表(HashMap)来存储遍历过的数字及其下标,可以将时间复杂度优化到 O(n)。具体步骤:
  1. 遍历数组,对于每个数字 nums[i]:
  1. 计算目标值与当前数字的差值 x = target - nums[i]
  1. 检查哈希表中是否存在差值 x:
      • 如果存在,说明找到了符合条件的两个数,返回它们的下标
      • 如果不存在,将当前数字及其下标存入哈希表
  1. 如果遍历结束仍未找到符合条件的两个数,返回空数组

复杂度分析

时间复杂度:O(n),其中 n 是数组的长度。对数组进行一次遍历。
空间复杂度:O(n),主要是哈希表的开销。最坏情况下,数组中没有答案,哈希表需要存储所有数字。

优势

  1. 相比暴力解法的 O(n²) 时间复杂度,该解法大大提高了效率
  1. 使用哈希表可以在常数时间内完成查找操作
  1. 只需遍历一次数组即可得到结果
 
上一篇
49. 字母异位词分组
下一篇
自动化测试(TestNG+HttpClient)

评论
Loading...