一. 思路

递增的排序数组,大概都可以用类似二分查找那样的双指针思路。采用双指针法

二. 代码

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
        ArrayList<Integer> result = new ArrayList<>();
        int i = 0, j = array.length-1;

        int ij = Integer.MAX_VALUE;

        while (i < j) {
            int sumV = array[i] + array[j];
            // 和太大了,那就j--
            if (sumV > sum) {
                j--;
            }else if (sumV < sum) { // 和太小了,那就i++
                i++;
            }else {
                if (ij > i*j) {
                    result.clear();
                    result.add(array[i]);
                    result.add(array[j]);
                    ij = i * j;
                }
                i++;
            }
        }

        return result;
    }
}