和为S的两个数字

来源:互联网 发布:软件工程学什么 编辑:程序博客网 时间:2024/06/16 20:26


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


import java.util.ArrayList;public class Solution {    public ArrayList<Integer> FindNumbersWithSum(int [] a,int sum) {        ArrayList<Integer> list = new ArrayList<>();        if (a == null || a.length <= 0) return list;        int n = a.length;        int start = 0;        int end = n - 1;        while (start <= (n + 1) /2) {            int curSum = a[start] + a[end];            if (curSum == sum) {                list.add(a[start]);                list.add(a[end]);                break;            } else if (curSum < sum)                start++;            else                end--;        }        return list;    }}