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

07-26 04:25