利用双指针,缩小区间,因为是排序数组,所以找到的一定是积最小的。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> list=new ArrayList<>();
int ahead=0,behind=array.length-1;//定义两个指针
while(behind>ahead){
int cursum=array[ahead]+array[behind];
if(cursum==sum){//找到当前和
list.add(array[ahead]);
list.add(array[behind]);
break;
}else if(cursum>sum){//当前和大于目标和,第二个指针左移
behind--;
}else{//当前和小于目标和,第一个指针右移
ahead++;
}
}
return list;
}
}


京公网安备 11010502036488号