📅  最后修改于: 2023-12-03 14:55:01.501000             🧑  作者: Mango
给定一个整数数组 nums
,找到其中两个不同的元素,使它们相加的和等于给定的目标值 target
。
假设每个输入,只对应唯一的输出。同时,数组中同一个元素不能使用两遍。
输入:
nums = [2, 7, 11, 15]
target = 9
输出:
[0, 1]
解释:
因为 nums[0] + nums[1] = 2 + 7 = 9
,所以返回 [0, 1]
。
此问题可以使用哈希表来解决。我们可以建立一个哈希表,遍历数组,每次先查询哈希表中是否已经存在当前元素的“互补元素”(即 target - nums[i]
),如果存在即说明已找到答案;否则将当前元素加入哈希表中,继续下一次遍历。
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hash_map = {}
for i in range(len(nums)):
if target - nums[i] in hash_map:
return [hash_map[target - nums[i]], i]
hash_map[nums[i]] = i