两数之和 - LeetCode 1
📝 题目描述
题目链接:两数之和
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
示例:
1 |
|
提示:
2 <= nums.length <= 104-109 <= nums[i] <= 109-109 <= target <= 109- 只会存在一个有效答案
💡 解题思路
方法一:暴力解法
最直接的方法是暴力枚举,即枚举数组中的每一个数x,寻找数组中是否存在target - x。但时间复杂度是 O(n²),空间复杂度是O(1)。
方法二:使用哈希表
使用哈希表,可以将寻找target - x的时间复杂度降低到从 O(N) 降低到 O(1)。
- 遍历数组时,检查
target - x是否在哈希表中 - 如果在,说明找到了答案
- 如果不在,将当前值存入哈希表
🔧 代码实现
1、暴力枚举
1 | class Solution { |
2、哈希表实现
1 | class Solution { |
📊 复杂度分析
- 时间复杂度:O(n) - 只需遍历一次数组
- 空间复杂度:O(n) - 需要哈希表存储元素
🎯 总结
- 核心思想:用空间换时间
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 很多时候不懂事!