前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode:两数之和

LeetCode:两数之和

作者头像
微客鸟窝
发布2021-08-18 15:27:31
2260
发布2021-08-18 15:27:31
举报
文章被收录于专栏:Go语言指北

力扣题目:

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

LeetCode题目源地址:https://leetcode-cn.com/problems/two-sum/

首先想到的暴力遍历法:

两层循环,依次拿出一个元素跟后面的元素求和,看与目标值是否相等

代码语言:javascript
复制
func twoSum(nums []int, target int) []int {
 for k1, v1 := range nums {
  for k2 := k1 + 1; k2 < len(nums); k2++ {
   if v1 + nums[k2] == target {
        return []int{k1, k2}
   }
  }
 }
 return []int{}
}

进阶方法

我们使用哈希法,将给定的切片 nums 的索引和值,翻转存入到 map 中:

  1. 判断 目标值 target - nums 中一个元素 是否存在 map 中;
  2. 如果存在则找到需要的值并返回;
  3. 若不存在 map 中,则将遍历中的索引及元素值翻转存入到 map 中。
代码语言:javascript
复制
func twoSum(nums []int, target int) []int {
 m := make(map[int]int)
 for k, v := range nums {
  if index, ok := m[target-v]; ok {
   return []int{index, k}
  } else {
   m[v] = k
  }
 }
 return []int{}
}

每天一道算法题,记得点赞打卡哦~


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微客鸟窝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先想到的暴力遍历法:
  • 进阶方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档