题目描述
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
主要思路: 遍历给定的数组,如果当前遍历到的数字在映射表中存在,那么就找到了符合条件的两个数字,将其在映射表中对应的值取出,与当前索引一起返回即可;如果不存在,那么将当前遍历到的数字与给定目标数字之差添加到映射表中。如果遍历结束函数依旧没有返回,则返回一个空数组。
// golang 版本
func twoSum(nums []int, target int) []int {
mp := make(map[int]int)
for i, v := range nums {
j, ok := mp[v]
if ok {
return []int{j, i}
}
mp[target-v] = i
}
return []int{}
}
# python 版本
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
mp = {}
for i, v in enumerate(nums):
if v in mp:
return [mp[v], i]
mp[target-v] = i
return []