和相等,乘积最小,那么两个加数的差尽可能大。
设置两个指针,一个在首部,一个在尾部,如果两者之和等于sum,返回终止程序;如果两者之和大于sum,向前移动尾指针;两者之和小于sum,向后移动头指针。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
int l=0;
int r=array.length-1;
ArrayList<Integer>list=new ArrayList<Integer>();
while(l<r){
if(array[l]+array[r]==sum){
list.add(array[l]);
list.add(array[r]);
return list;
}
if(array[l]+array[r]<sum)
l++;
else
r--;
}
return list;
}
}