因?yàn)閿?shù)組有序,所以原理是用兩個指針音比,一個指向起始腔稀,一個指向末尾,然后判斷當(dāng)前兩個元素之和與目標(biāo)sum的大小關(guān)系幽勒。
public class FindTwoSum {
public void findTwoSum(int[] a, int n, int sum) {
int left = 0;
int right = n - 1;
int curSum = 0;
//當(dāng)left >= right嗜侮,兩個指標(biāo)相遇,說明a數(shù)組中不存在和為sum的兩個數(shù)
while (left < right) {
//計算當(dāng)前和
curSum = a[left] + a[right];
//過大,減小一些
if (curSum > sum) {
right--;
} else if (curSum < sum) { //太小锈颗,大一些
left++;
} else { //剛好顷霹,返回
System.out.print(a[left]);
System.out.print(" ");
System.out.print(a[right]);
break;
}
}
}
public static void main(String[] args) {
int[] a = { 1, 3, 5, 7, 9, 11 };
FindTwoSum fts = new FindTwoSum();
fts.findTwoSum(a, 6, 8);
}
}