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} }
执行结果如下: