排序数组中和为给定值的两个数字 - xiewenfeng/test GitHub Wiki

思路:由于数组已排过序,头部元素肯定比尾部小,分别从头和尾遍历数组,将两头元素相加,如果值大于给定值,则将尾部的下标减小,如果小于给定值,则将头部的下标增加,直至遍历完数组元素。

private void findFixSum(int[] array, int num) {
    if(array == null) return;
    int low = 0, high = array.length - 1;
    while(low < high) {
        if((array[low] + array[high]) > num) {
             high--;
        } else if((array[low] + array[high]) < num) {
            low++;
        } else {
            System.out.println("low = " + array[low] + "high = " + array[high]);
            low++;
        }
    }
}