Tips:该专栏的题解整理在https://github.com/dzw001/leetcode_notebook,有需要的童鞋自取哦~
题目链接
https://leetcode-cn.com/problems/two-sum/
题目描述
题目难度:简单
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
解题思路
经典的空间换时间,一边遍历数组,一边建立哈希表(字典)visited_dict
,只需遍历一遍数组即可。
假设当前遍历到nums[i]
,则查询 target - nums[i]
是否在字典中,若不在,则在字典中加入新的键值对,key 为 nums[i]
,value 为 i
;若在,则返回 [i, visited_dict[target - num]]
。
# Python3
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
visited_dict = {}
for i, num in enumerate(nums):
if visited_dict.get(target - num) is None:
visited_dict[num] = i
else:
return [i, visited_dict[target - num]]
, visited_dict[target - num]]