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