public class TwoElementEqualSum { /** * 第 14 题: 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是 O(n) 。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组 1 、 2 、 4 、 7 、 11 、 15 和数字 15 。由于 4+11=15 ,因此输出 4 和 11 。 */ public static void main(String[] args) { int[] a={1,2,4,7,11,15}; find(a,18); } static void find(int[] a,int sum){ int i=0; int j=a.length-1; while(i<j){ if(a[i]+a[j]>sum){ j--; }else if(a[i]+a[j]<sum){ i++; }else{ System.out.println(a[i]+"+"+a[j]+"="+sum); return; } } System.out.println("not found"); } }