Go算法

(12)Go查找表求两数之和

2019-05-14  本文已影响0人  哥斯拉啊啊啊哦

方法1:数组排序后,用对撞指针法
《(9)Go对撞指针法求数组两数之和》
参考https://www.jianshu.com/p/610d0c362eb9

方法2:查找表,时间复杂度O(n),空间复杂度O(n)
// 每次只查找 i 前面的
// map里面存储的是target-nums[i]的差值,遍历下个元素时,先去map看能不能取到,能取到则有
func twoSum2(nums []int, target int) []int {
    // m: key为target-num[i]的差值,val为索引i
    m := make(map[int]int)
    for i, v := range nums {
        if j, ok := m[v]; ok {
            return []int{j, i}
        }
        m[target-v] = i
    }
    return nil
}

提交leetcode,通过

上一篇下一篇

猜你喜欢

热点阅读