//思路:使用hash表存储数组各元素是否存在的标志,然后遍历数组,判断sum与当前数组元素的差值是否在hash表中, //若为真则打印,该算法不要求数组有序,但要求一个hash数组的额外空间,时间复杂度是O(n) private static void execute1(int[] array, int m) { int size = array.length; int hash[] = new int[size]; for(int i = 0; i < size; i++) { hash[array[i]%size] = 1; //hash表存储数组各元素是否存在的标志 } for(int i = 0; i < size; i++) { int tmp = m - array[i]; if((tmp > array[i]) && (hash[tmp%size] == 1)){ System.out.println(array[i] + " " + tmp); } } }