排序数组中和为给定值的两个数字 - 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++;
}
}
}