![026f716a3d540d5541b7e43560784160.png](https://img-blog.csdnimg.cn/img_convert/026f716a3d540d5541b7e43560784160.png)
题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
返回值描述:
对应每个测试案例,输出两个数,小的先输出。
示例
输入:
{1, 2, 4, 7, 11, 15}, 15
输出:
[4, 11]
解题思路及代码
方法一:哈希法
要求a + b = sum, 如果已知a, 那么b = sum - a。
所以可以先将b添加入哈希中,然后遍历一遍数组设为a, 在哈希中寻找是否存在sum-a,然后再更新乘积最小值。
这种方法的核心是使用 map 的 find()
方法。
C++ 代码如下:
class