两数之和

2020-02-25  本文已影响0人  路过_720a

题目描述:
  给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
  你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

解题思路:
1.暴力法
  遍历所有可能的两数之和, 判断是否满足条件。

func twoSum(nums []int, target int) []int {
    length := len(nums)
    for i := 0; i < length-1; i++ {
        for j := i + 1; j < length; j++ {
            if target == (nums[i] + nums[j]) {
                return []int{i, j}
            }
        }
    }

    return []int{}
}

2.哈希表
  存储遍历过的数字和位置的映射关系,以空间换时间

func twoSum(nums []int, target int) []int {
    tmp := make(map[int]int)
    for i, v := range nums {
        left := target - v
        if j, exist := tmp[left]; exist {
            return []int{j, i}
        }
        tmp[v] = i
    }
    return []int{}
}
上一篇下一篇

猜你喜欢

热点阅读