public static void findNumber(int number) {
int[] soretedArray = { 1, 5, 6, 8, 9 };
for (int i = 0; i <= soretedArray.length; i++) {
for (int j = i + 1; j < soretedArray.length; j++) {
if (soretedArray[i] + soretedArray[j] == number) {
System.out.println(soretedArray[i] + "::" + soretedArray[j]);
return;
}
}
}
}
使用这段代码,我能够找到数字,它的复杂度是 O(N^2),但我必须使用 O(N) 复杂度来找到它,即在 Java 中只使用一个 for 循环或 HashMap 或类似的东西。
最佳答案
我记得,我在看关于这个问题的官方谷歌视频。虽然它没有在 java 中演示,但它在问题的不同变体中逐步解释。你绝对应该检查它:
How to: Work at Google — Example Coding/Engineering Interview
关于java - 如何在 O(n) 的排序数组中找到两个总和为给定数字的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41777177/