输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出
哈哈哈,终于自己做对一道题;虽然很low,但是也要记录一下:
代码:
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> res = new ArrayList<>();
out:
for(int i = 0; i < array.length; i++){
int count = sum - array[i];
for(int j = array.length-1; j > 0 ; j--){
if(count == array[j]){
res.add(array[i]);
res.add(array[j]);
break out;
}
}
}
return res;
}
}
**********************************************************************************************************************
下面是正规解(自己的方法只能算是民兵了):
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> res = new ArrayList<>();
int low = 0;
int hight = array.length - 1;
while(low < hight){
if(array[low] + array[hight] == sum){
res.add(array[low]);
res.add(array[hight]);
return res;
}else if(array[low] + array[hight] > sum){
hight--;
}else{
low++;
}
}
return res;
}
}