和为S的两个数字

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

对应每个测试案例,输出两个数,小的先输出。

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        if (array == null || array.length <=0)
            return list;
        
        int head = 0;
        int tail = array.length-1;
        while (array[head] <= sum/2) {
            int cur = array[head] + array[tail];
            if (cur == sum) {
                list.add(array[head]);
                list.add(array[tail]);
                break;
            }
            else if (cur < sum) {
                head ++;
            }
            else {
                tail --;
            }
            
        }
        return list;
    }
}
原文地址:https://www.cnblogs.com/wxisme/p/5831307.html