两数之和
type
status
date
slug
summary
tags
category
difficulty
icon
password

题解:
JAVA
C++
这道题目要求在数组中找到两个数的和等于目标值,返回这两个数的下标。解题思路如下:
解题思路
使用哈希表(HashMap)来存储遍历过的数字及其下标,可以将时间复杂度优化到 O(n)。具体步骤:
- 遍历数组,对于每个数字 nums[i]:
- 计算目标值与当前数字的差值 x = target - nums[i]
- 检查哈希表中是否存在差值 x:
- 如果存在,说明找到了符合条件的两个数,返回它们的下标
- 如果不存在,将当前数字及其下标存入哈希表
- 如果遍历结束仍未找到符合条件的两个数,返回空数组
复杂度分析
时间复杂度:O(n),其中 n 是数组的长度。对数组进行一次遍历。
空间复杂度:O(n),主要是哈希表的开销。最坏情况下,数组中没有答案,哈希表需要存储所有数字。
优势
- 相比暴力解法的 O(n²) 时间复杂度,该解法大大提高了效率
- 使用哈希表可以在常数时间内完成查找操作
- 只需遍历一次数组即可得到结果
- 作者:Episkey
- 链接:https://episkey.top/article/twoSum
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。