题目:
输入一个递增排序的数组和一个数字 s。
在数组中查找两个数,使得它们的和正好是 s。
如果有多对数字的和等于 s,输出任意一对即可。
解答:
1 public class Solution { 2 3 public static void main(String[] args) { 4 int[] data = {1,2,4,7,11,15}; 5 System.out.println(findNumberWithSum(data, 15)); 6 } 7 8 private static boolean findNumberWithSum(int[] data, int sum) { 9 boolean found = false; 10 if(data == null) { 11 return found; 12 } 13 14 int num1 = 0; 15 int num2 = 0; 16 17 int start = 0; 18 int end = data.length-1; 19 while(start < end) { 20 int curSum = data[start] + data[end]; 21 if(curSum == sum) { 22 num1 = data[start]; 23 num2 = data[end]; 24 found = true; 25 break; 26 } else if(curSum > sum) { 27 end--; 28 } else { 29 start++; 30 } 31 } 32 33 System.out.println(num1); 34 System.out.println(num2); 35 36 return found; 37 } 38 }