输入n个整数,找出其中两个数,他们之和等于整数m 如果存在输出 true 不存在输出false
我这里用的是二分查找以及双指针
双指针
二分查找
public class Main { public static boolean sumSearch(int arr[], int a) { int i = 0; int j = arr.length - 1; Arrays.sort(arr); while (i < j) { if (arr[j] + arr[i] < a) { i++; } else if (arr[j] + arr[i] > a) { j--; } else if (arr[j] + arr[i] == a) return true; } return false; } public static boolean sumBinarySearch(int arr[], int a) { Arrays.sort(arr); for (int x = 0; x < arr.length; x++) { int y = x + 1; int z = arr.length - 1; int temp = a - arr[x]; while (y <= z) { if (temp < arr[(y + z) / 2]) z = (y + z) / 2 - 1; else if (temp > arr[(y + z) / 2]) y = (y + z) / 2 + 1; else if (temp == arr[(y + z) / 2]) return true; } } return false; } public static void main(String[] args) { int A[] = { 5, 2, 6, 2, 3, 2 }; System.out.println(sumSearch(A, 10)); System.out.println(sumBinarySearch(A, 10)); } }