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

package main

import (
    "fmt"
)

func main() {
    nums := []int{1, 5, 7, 8, 9}
    target := 10
    solutions(nums, target)
}

func solutions(nums []int, target int) (a, b int) {
    var dict map[int]int
    dict = make(map[int]int)
    defer fmt.Println(a, b)
   #遍历一遍列表对应的时间复杂度为O(n)
    for k, v := range nums {
        dict[v] = k
        num := target - v
        #如果另一个数值不在字典中,则将第一个数值及其的索引报错在字典中 #因为在字典中查找的时间复杂度为O(1),因此总时间复杂度为O(n)
        _, ok := dict[v]
        if !ok {
            dict[v] = k
        } else {
            fmt.Println(num, v)
            return dict[num], k
        }
    }

    return 0, 0
}
posted @ 2020-04-03 09:42  small_lei_it  阅读(930)  评论(0编辑  收藏  举报