1. 两数之和

题目连接:两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15]target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]

解题思路

  1. 创建一个 map,用于存储数组中整数及下标的对应关系,以整数为 key,下标为 value

  2. 使用 for 循环遍历给定的数组

  3. 用目标值减去每次遍历的结果,然后判断做减结果是不是上面 map 中的 key:

    • 返回当前遍历的 index,以及上面 map 中以做减结果为 key 对应的 value

    • 以当前遍历得到的整数为 keyindexvalue 保存到上面 map

代码

package main
import "fmt"
func main() {
result := twoSum([]int{2, 7, 11, 15}, 9)
fmt.Println(result)
}
func twoSum(nums []int, target int) []int {
tempMap := make(map[int]int)
for index, value := range nums {
result := target - value
if _, ok := tempMap[result]; ok {
return []int{index, tempMap[result]}
} else {
tempMap[value] = index
}
}
return nil
}

Title: 两数之和

Date: 2019.11.20

Author: zhangpeng

Github: https://github.com/fullstack-zhangpeng