最外层的两个数和一样的时候你他们的乘积是最小的
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> list = new ArrayList<Integer>();
//用两层循环,第一从前往后循环数组,第二从后往前循环数组,
int i=0;
int j= array.length-1;
while(i<j){
//判断条件如果满足条件跳出循环
if(sum == array[i]+array[j]){
list.add(array[i]);
list.add(array[j]);
break;
//条件2如果不满足跳出循环条件的时候,判断是大了还是小了;
//如果是小了那么就是前面的数小了,如果在移动后面一个你数组的话这两个数的和就会更小
//只能移动前一个
//反之,如果是大了则移动后一个,才会让两个数的和变小
}else if(array[i]+array[j]<sum){
i++;
}else{
j--;
}
}
return list ;
}
}


京公网安备 11010502036488号