09 两数之和-20200321
题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
注意事项
- 注意数组长度,可以返回空数组。
- 有可能是负数存在。
思路一
第一个出现在脑海中的就是双层循环,但是复杂度肯定就是高了。于是想出来采用字典的形式,一次循环。
- 将指针指到的数字与目标做差,将差值作为key,index作为value存下来。
- 指针加一,如果能够在字典中找到相应的key就返回相应的value和当前的index。如果没有找到就重复第一步。
修改经历:
1. 提交成功。是不是Python 3的运行内存都是大于14MB的啊?(第一次提交)
- 执行用时 :40 ms, 在所有 Python3 提交中击败了92.75%的用户
- 内存消耗 :15 MB, 在所有 Python3 提交中击败了5.03%的用户
心得体会:
这个方法挺好,就暂时不考虑其他算法了。
最终代码展示:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
sum_index = []
dict = {}
for i in range(0, len(nums)):
if nums[i] in dict:
sum_index += [dict[nums[i]], i]
break
else:
dict[target-nums[i]] = i
return sum_index
本文详细解析了一道经典算法题“两数之和”的高效解法,通过使用字典结构,实现了一次循环内找到目标值对应的两个整数及其下标,避免了传统双层循环的高复杂度。

451

被折叠的 条评论
为什么被折叠?



