map:1.两数之和
2019-08-04 本文已影响0人
Linrundong
考点:哈希表
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
------------
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
package main
import (
"fmt"
"strconv"
"strings"
)
func twoSum(nums []int, target int) []int {
var (
numMap = make(map[int]int)
otherTarNum int
retList = []int{}
)
for listIndex, listNum := range nums {
otherTarNum = target - listNum
if mapValue, ok := numMap[otherTarNum]; ok {
if mapValue != listIndex {
retList = append(retList, mapValue)
retList = append(retList, listIndex)
return retList
}
}
//避免使用相同索引组合,先判断再插入
numMap[listNum] = listIndex
}
return nil
}
func main() {
var (
sum_list string
num_list = []int{}
tar_num int
)
fmt.Println("输入数组:")
fmt.Scan(&sum_list)
fmt.Println("输入数字合:")
fmt.Scan(&tar_num)
list_str:= strings.Split(sum_list, ",")
for _, str := range list_str {
tmp, _ := strconv.Atoi(str)
num_list = append(num_list, tmp)
}
fmt.Println(twoSum(num_list, tar_num))
}