题目
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
方法
方法:双指针问题
参考:https://www.cnblogs.com/wupeixuan/p/8680191.html
时间复杂度:n
思路
因为数组满足递增序列。所以使用两个指针,初始化left和right指向数组的首位
如果array[left] + array[right] == sum,那么这两个数就是最后答案。因为,两数之和相等,差值越小,两数乘积越大
如果total < sum,那么array[left]肯定不是结果数之一,left++
如果total > sum,那么array[right]肯定不是结果数之一,right–
代码
1 | function FindNumbersWithSum(array, sum) { |