LeetCode 1. Two Sum
题目描述
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
解题思路
本题要求在一个数组中找出两个和为 target 的数,并返回它们的下标。最直观的做法是双重循环遍历,时间复杂度为 O(n²),但这不是最优解。
更高效的做法是使用哈希表。核心思路是:遍历数组,对于每个元素 nums[i],我们计算出它需要的配对值 target - nums[i],然后在哈希表中查找该配对值是否已经出现过。如果出现过,说明我们找到了答案,直接返回两个下标即可;如果没有出现,则将当前元素的值和下标存入哈希表,供后面的元素查找。
这样做的好处是:
- 每个元素只需要遍历一次,时间复杂度为 O(n)
- 通过哈希表的 O(1) 查找,快速判断配对值是否存在
- 一次遍历即可完成查找和存储,简洁高效
复杂度分析
- 时间复杂度:O(n),其中 n 是数组长度。只需要遍历一次数组,每次查找和插入哈希表都是 O(1)。
- 空间复杂度:O(n),哈希表中最多存储 n 个元素。
代码
1 | package code.J1; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 𝒞𝒶𝓃𝒶𝓇𝓎!