两数之和
算法知识视频讲解
时间限制:2秒 空间限制:64M
知识点
数组
哈希
题目
题解(43)
讨论(308)
排行
描述
给出一个整数数组,请在数组中找出两个加起来等于目标值的数,
你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的
假设给出的数组中只存在唯一解
例如:
给出的数组为 {20, 70, 110, 150},目标值为90
输出 index1=1, index2=2
示例1
输入:
[3,2,4],6
复制
返回值:
[2,3]
复制
说明:
因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 < 下标3 ,所以输出[2,3]
关联企业
关联职位
相似企业真题
思路和心得
1.哈希字典统计即可
类似dp “往前探”的思想
2.从前往后,每到一处,查找前面有没有能与自己配对成功的
哈希字典加速了这一查找过程
python3代码
# # # @param numbers int整型一维数组 # @param target int整型 # @return int整型一维数组 # class Solution: def twoSum(self , numbers , target ): # write code here val_idx = dict() for i, x in enumerate(numbers): y = target - x if y in val_idx: return [val_idx[y], i + 1] val_idx[x] = i + 1
c++代码
class Solution { public: /** * * @param numbers int整型vector * @param target int整型 * @return int整型vector */ vector twoSum(vector& numbers, int target) { // write code here unordered_map val_idx; int n = numbers.size(); for (int i = 0; i < n; i ++) { int x = numbers[i]; int y = target - x; if (val_idx.count(y) > 0) return vector{val_idx[y], i + 1}; val_idx[x] = i + 1; } return vector{}; } };