首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >可视化图解算法67:两数之和

可视化图解算法67:两数之和

原创
作者头像
用户11589437
发布2025-11-06 16:43:44
发布2025-11-06 16:43:44
760
举报

LeetCode 第1题: 两数之和

1.题目

描述

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

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

示例 1:

代码语言:javascript
复制
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

代码语言:javascript
复制
输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

代码语言:javascript
复制
输入:nums = [3,3], target = 6
输出:[0,1]

提示:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • 只会存在一个有效答案

2. 题解思路

本题的关键是:给定目标值target ,能想到将target 分解为:v与target-v,之后查找target-v是否存在。查找值是否存在一般用set,但题目要求返回元素v对应的下标,这时可以用map。

具体思路是:

  1. 定义一个哈希表(map,key:数组元素值,value:元素下标);
  2. 遍历nums数组: 2.1. 查询结果值(target-v)是否存在; 2.2. 如果元素不存在,将当前元素、索引构建成map的key - value保存。
  3. 如果没找到,返回空。

如果文字描述的不太清楚,你可以参考视频的详细讲解:B站@好易学数据结构

3.编码实现

核心代码如下:

代码语言:go
复制
func twoSum(nums []int, target int) []int {
  //1.定义一个哈希表(map,key:数组元素值,value:元素下标)
  hashTable := make(map[int]int)
  //2.遍历nums数组
  for i := 0; i < len(nums); i++ {
    v := nums[i]
    //2.1.查询结果值(target-v)是否存在
    if _, ok := hashTable[target-nums[i]]; ok {
      return []int{hashTable[target-v], i}
    }
    //2.2 如果元素不存在,将当前元素、索引构建成map的key - value保存
    hashTable[v] = i
  }
  //3. 如果没找到,返回空
  return nil
}

具体完整代码你可以参考下面视频的详细讲解。

4.总结

本题的关键是:给定目标值target ,能想到将target 分解为:v与target-v,之后查找target-v是否存在。查找值是否存在一般用set,但题目要求返回元素v对应的下标,这时可以用map。

《数据结构与算法》深度精讲课程正式上线啦!7 大核心算法模块全解析:

✅ 链表

✅ 二叉树

✅ 二分查找、排序

✅ 堆、栈、队列

✅ 回溯算法

✅ 哈希算法

✅ 动态规划

无论你是备战笔试面试、提升代码效率,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

对于LeetCode数据结构与算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:悠闲涉长途,西日照禾黍。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. 题解思路
  • 3.编码实现
  • 4.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档