剑指offer——和为S的两个数字

题目链接:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

解题思路:

左右夹逼

 1 import java.util.ArrayList;
 2 public class Solution {
 3     public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
 4         ArrayList<Integer> res = new ArrayList<>();
 5         if(array==null || sum==0)
 6             return res;
 7         
 8         int i=0;
 9         int j=array.length-1;
10         
11         while(i<j)
12         {
13             if(array[i]+array[j]==sum)
14             {
15                 res.add(array[i]);
16                 res.add(array[j]);
17                 return res;
18             }
19             else if(array[i]+array[j]<sum)
20             {
21                 i++;
22             }
23             else{
24                 j--;
25             }
26         }
27         
28         return res;
29         
30     }
31 }
原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10872291.html