题目:
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
解答:
1 import java.util.ArrayList; 2 3 public class Solution { 4 5 public static void main(String[] args) { 6 int[] arr = {1,2,5,7,9}; 7 int sum = 7; 8 System.out.println(FindNumbersWithSum(arr, sum)); 9 } 10 11 public static ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { 12 ArrayList<Integer> res = new ArrayList<>(); 13 14 if(array == null || array.length == 0) { 15 return res; 16 } 17 18 int left = 0; 19 int right = array.length-1; 20 21 while(left < right) { 22 if(array[left]+array[right] == sum) { 23 res.add(array[left]); 24 res.add(array[right]); 25 break; 26 27 } else if(array[left]+array[right] < sum) { 28 left++; 29 } else { 30 right--; 31 } 32 } 33 34 return res; 35 } 36 }