和为S的两个数字

题目:

输入一个递增排序的数组和一个数字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 }

原文地址:https://www.cnblogs.com/wylwyl/p/10469553.html