2021-09-10:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,但是数组中同一个元素在答案里不能重复出现,你可以按任意顺序返回答案。

福大大 答案2021-09-10:

使用map。
时间复杂度:O(N)。
空间复杂度:O(N)。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
    nums := []int{1, 3, 5}
    target := 6
    ret := twoSum(nums, target)
    fmt.Println(ret)
}

func twoSum(nums []int, target int) []int {
    // key 某个之前的数   value 这个数出现的位置
    map0 := make(map[int]int)
    for i := 0; i < len(nums); i++ {
        if _, ok := map0[target-nums[i]]; ok {
            return []int{map0[target-nums[i]], i}
        }
        map0[nums[i]] = i
    }
    return []int{-1, -1}
}

执行结果如下:
图片


左神java代码