- 输入一个从小到大已排好序的整数数组和一个整数,要求找出数组中两个数的和等于这个整数的所有整数对
- 要求时间复杂度为 O(N)
public void findAll(int[] arr, int sum) {
int len = arr.length;
int left = 0;
int right = len - 1;
if (arr == null || len <= 1) {
System.out.println("数组输入不合法,请重新输入");
return;
}
if (sum < arr[0] + arr[1] || sum > arr[len - 2] + arr[len -1]) {
System.out.println("没有符合条件的数");
return;
}
while (left < right) {
if (arr[left] + arr[right] > sum) {
right--;
} else if (arr[left] + arr[right] < sum) {
left++;
}else {
System.out.println(arr[left] + " + " + arr[right] + " = " + sum);
left++;
right--;
}
}
}