有序数组的查找一定要想一下二分查找能不能用,效率可以提升很多
Q:怎么找到多个和相同情况下,乘积最小?
A:和相同的情况下,两个数离的越远乘积越小
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> res=new ArrayList<Integer>();
if(array==null||sum<0) return res;
int i=0, j=array.length-1;//i从前向后找,j从后向前找
while(i<j){
if(array[i]+array[j]==sum){//和恰好为sum
res.add(array[i]);
res.add(array[j]);
break;
}else if(array[i]+array[j]>sum){//和大于sum
j--;
}else{//和小于sum
i++;
}
}
return res;
}
}