时间复杂度O(n²)
class FindDemo { public static void main(String[] args) { int[] l = new int[]{2, -1, 5, 3, 7, -4, 1, -2}; int n = 3; List ll = new ArrayList(); for (int i = 0; i < l.length; i++) { for (int j = i + 1; j < l.length; j++) { if (l[i] + l[j] == n) { ll.add(l[i]); ll.add(l[j]); } } } System.out.println(ll); } }
时间复杂度O(n)
class FindDemo { public static void main(String[] args) { int[] l = new int[]{2, -1, 5, 3, 7, -4, 1, -2}; Arrays.sort(l); System.out.println(Arrays.toString(l)); int n = 3; List ll = new ArrayList(); int i = 0; int j = l.length - 1; while (i < j) { if (l[i] + l[j] < n) { i++; } else if (l[i] + l[j] > n) { j--; } else { ll.add(l[i]); ll.add(l[j]); i++; j--; } } System.out.println(ll); } }