时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M 热度指数:430334
本题知识点: 数学 数组 双指针
题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
返回值描述:
对应每个测试案例,输出两个数,小的先输出。
示例1
输入
[1,2,4,7,11,15],15
返回值
[4,11]
思路:用map记录,获取map的sum - array[i]即val,不存在则map.set(array[i],temp),存在则计较大小并存储序列数组。
function FindNumbersWithSum(array, sum)
{
// write code here
const map = new Map()
let min ,arr = []
for(let i = 0 ; i < array.length ; i++){
let temp = sum - array[i]
if(map.get(temp)){
let produce = temp*map.get(temp)
if(!min){
min = produce
arr = [temp,map.get(temp)]
}else{
min = Math.min(min,produce)
if(min === produce){
arr = [temp,map.get(temp)]
}
}
}else{
map.set(array[i],temp)
}
}
return arr
}