美文网首页
map:1.两数之和

map:1.两数之和

作者: Linrundong | 来源:发表于2019-08-04 18:14 被阅读0次

    考点:哈希表

    给定一个整数数组 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))
    }
    

    相关文章

      网友评论

          本文标题:map:1.两数之和

          本文链接:https://www.haomeiwen.com/subject/xfbydctx.html