数组中找和
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> arr=new ArrayList<>(2);
int p=0;
if(array.length==0) return new ArrayList<Integer>();
for(int i=0;i<array.length/2;i++){
for(int j=1;j<array.length;j++){
if(array[j]==sum-array[i]){
int m=array[i]*array[j];
if(p==0){
p=m;
}
if(m<=p){
p=m;
arr.add(array[i]);
arr.add(array[j]);
}
}
}
}
return arr;
}
}
创建一个数组,循环中如果找到一对和为sum的数,就将它们存入数组中,将他们的积用p记录起来,如果后面会有积比这个积更小的就将数组中的这对数字替换掉,最终输出乘积最小的一对数字。注意,外层循环只用遍历一半,要不然便会重复存入数组。