题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
//思路:双指针,首位开始。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
//1 2 3 4 5 6
ArrayList<Integer> list = new ArrayList<>();
int p1 = 0;
int p2 = array.length - 1;
int res = Integer.MAX_VALUE;
while(p1 < p2){
if(array[p1] + array[p2] == sum){
if(array[p1] * array[p2] < res){
res = array[p1] * array[p2];
list.clear();
list.add(array[p1]);
list.add(array[p2]);
}
p1++;
}else if(array[p1] + array[p2] < sum){
p1++;
}else{
p2--;
}
}
return list;
}
}