美文网首页
leetcode1.两数之和(go实现)

leetcode1.两数之和(go实现)

作者: 小气的王二狗 | 来源:发表于2019-10-05 13:11 被阅读0次
image.png

普通写法

func twoSum2(nums []int, target int) []int {
  for key, val := range nums {
    for k, v := range nums[(key + 1):] {
      if val+v == target {
        nums[0] = key
        nums[1] = k + key + 1
        return nums[0:2]
      }
    }
  }
  return nil
}

速度为36ms

优化写法,用go的map实现,用哈希表会快很多

func twoSum(nums []int, target int) []int {
  //创建一个map
  maps := make(map[int]int, len(nums)/2)
  for k, value := range nums {
    if num1, ok := maps[target-value]; ok {
      return []int{k, num1}
    }
    maps[value] = k
  }
  return []int{0, 0}
}

相关文章

网友评论

      本文标题:leetcode1.两数之和(go实现)

      本文链接:https://www.haomeiwen.com/subject/yjgepctx.html