两数之和
给定一个整数数组
nums
和一个整数目标值target
,请你在该数组中找出 和为目标值target
的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
暴力法(熟悉go
的循环
func twoSum(nums []int, target int) []int {
for index, value := range nums {
for tick := index + 1; tick < len(nums); tick++ {
if value+nums[tick] == target {
return []int{index, tick}
}
}
}
return nil
}
哈希表法(熟悉go
的哈希
func twoSum(nums []int, target int) []int {
hashTable := map[int]int{}
for i, x := range nums {
if p, has_targer_minus_x := hashTable[target-x]; has_targer_minus_x {
return []int{i, p}
} else {
hashTable[x] = i
}
}
return nil
}