开始打算用一个数组保存差值,arr[target-nums[i]] = i, 只要arr[nums[i]]有内容就能满足target,返回arr[nums[i]]和i。但是会出现复数的情况,所以换成map。
换成map就只用一边遍历,一遍检查和存入对应key就行了,value就是index,不用拐着弯儿存。
func twoSum(nums []int, target int) []int {m := make(map[int]int, len(nums)) // 预分配容量for i, v := range nums {if j, ok := m[target-v]; ok {return []int{j, i}}m[v] = i}return nil // 返回 nil 比返回空切片更符合 Go 习惯
}