[1][简单][哈希] 两数之和
题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
解题思路
在时间内求解. 我们可以先遍历一遍列表, 得到每个数对应的索引组成的字典. 然后再从头到尾遍历一遍数组, 对于每个数字, 判断互补的那个数字是否在字典中, 在就找到了对应的两个数.
或者边遍历, 边判断. 对于每个数字, 我们要找的是它互补的那个数字, 因此在遍历过程中, 对于数字numbers[i]
, 我们将target-numbers[i]
存放到字典中, 这样如果遍历到target-numbers[i]
, 就可以直接找到numbers[i]
对应的索引. 注意两点:
可能存在多个相等的数字, 因此
key
对应的值是一个list
, 将所有符合的i
都放进去某个位置的数只能使用一次, 为防止使用两次的情况, 判断结果时, 应排除两个数字
i
相同的情况
最后更新于