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)复杂度来找到它,即仅使用for for loop或hash-map或Java中的类似项。
最佳答案
我记得我当时在观看有关此问题的Google官方视频。尽管未在Java中进行演示,但将以问题的不同变体逐步介绍它。您一定要检查一下:
How to: Work at Google — Example Coding/Engineering Interview