采用窮舉法的話, 其時(shí)間復(fù)雜度為 O((n^2)/2). 略去窮舉法的實(shí)現(xiàn).
采用如下實(shí)現(xiàn), 其時(shí)間復(fù)雜度為 O(n), 空間復(fù)雜度增至 O(n).
public class Test {
public static void main(String[] args) {
int[] numberArr = {3, 5, 0, 35, 3, 25, 6, 3, 7, 6};
int sum = 13;
int[] result = find(numberArr, sum);
System.out.println("滿足條件的兩個(gè)數(shù)的索引為: " + Arrays.toString(result));
}
public static int[] find(int[] numberArr, int sum) {
Map<Integer, Integer> temp = new HashMap<>();
for (int i = 0; i < numberArr.length; i++) {
int number = numberArr[i];
int target = sum - number;
Integer targetIdx = temp.get(target);
if (targetIdx != null) {
return new int[]{targetIdx, i};
} else {
temp.put(number, i);
}
}
return null;
}
}