42.和为S的两个数
题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
解题思路:使用双指针法,开始时分别将两个指针分别指向第一个数的位置和最后一个数的位置,结果要求输出乘积最小两个数,则找到的第一对数就是乘积最小的。
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> list=new ArrayList<>();
int L=0;
int R=array.length-1;
while(L<R)
{
if(sum==array[L]+array[R])
{
list.add(array[L]);
list.add(array[R]);
return list;
}
else if(array[L]+array[R]<sum)
L++;
else
R--;
}
return list;
}