package mainimport "fmt"func twoSum(nums []int, target int) []int { //时间复杂度:O(n²) //暴力遍历 for i := 0; i < len(nums); i++ { //遍历,从第0个位置开始 for y := i + 1; y < len(nums); y++ { //遍历。从第1个位置开始 if nums[i]+nums[y] == target { //每两个位置都相加一次,判断是否等于目标值 return []int{i, y} } } } return nil}func twoSum2(nums []int, target int) []int { //时间复杂度:O(n) var hashTable = map[int]int{} //保存数组中的每个值 value:index形式 for i := 0; i < len(nums); i++ { //遍历数组 if p, ok := hashTable[target-nums[i]]; ok { //判断map中是否有符合条件的数据 return []int{p, i} //返回前一个索引,和当前索引 } hashTable[nums[i]] = i //保存value:index形式到临时哈希表中 } return nil}func main() { nums := []int{3, 2, 4} target := 6 //fmt.Println(twoSum(nums, target)) fmt.Println(twoSum2(nums, target))}