两数之和
算法-两数之和
背景
-
算法–两数之和
-
博主以代码随想录算法公开课进行学习
题目
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路
- 使用哈希法的时候:当我们需要查询一个元素是否在集合里的时候
- 本题需要一个集合来存放我们遍历后的元素,在遍历数组的时候再询问这个集合,看元素是否遍历过
- map是一种key value的存储结构,key = 数值,value = 下标
代码
1 | class Solution { |
总结
- 为什么会想到用哈希表
- 当我们需要查询一个元素是否在集合里的时候
- 哈希表为什么用map
- Set 只能存 “值”,只能判断补数是否存在;而我们需要同时获取补数的下标,Map 的 “键值对” 结构刚好能满足 “存数值 + 存下标” 的需求。
- 本题map是用来存什么的
- 存已遍历过的数组元素及其下标,相当于 “遍历账本”,供后续元素快速查补数
- map中的key和value用来存什么的
- key:数值
- value:数组下标