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); } }
作者:hellobinfeng 发表于2013-12-4 0:50:34 原文链接
阅读:214 评论:0 查看评论