1 如果用Hashtable,能取得时间复杂度O(n)
2 如果用前后指针来做,时间复杂度为O(nlogn) 因为要排序
package Moderate;
import java.util.Arrays;
/**
* Design an algorithm to find all pairs of integers within an array which sum to a specified value.
译文:
设计一个算法,找到数组中所有和为指定值的整数对。
*
*/
public class S17_12 {
public static void printPairSums(int[] array, int sum) {
Arrays.sort(array);
int first = 0; // 前指针
int last = array.length - 1; // 后指针
while (first < last) {
int s = array[first] + array[last];
if (s == sum) { // 找到
System.out.println(array[first] + " " + array[last]);
++first;
--last;
} else {
if (s < sum) { // 说明现在的和太小了,所以要增大first
++first;
} else {
--last;
}
}
}
}
public static void main(String[] args) {
int[] test = { 9, 3, 6, 5, 7, -1, 13, 14, -2, 12, 0 };
printPairSums(test, 12);
}
}