開始打算用一個數組保存差值,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 習慣
}