java - 如何在 O(n) 的排序数组中找到两个总和为给定数字的数字?

标签 java algorithm search big-o

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/

相关文章:

java - 如果您不编写 Web 应用程序并且您的客户端不是浏览器,那么 Web 套接字相对于常规套接字的优势是什么?

r - 为什么实际的世代数与 R 中的遗传算法不一样

c - C 中链表的递归搜索函数

search - 使用 Lucene 的 Sitecore 7.2 中的热插拔索引

java - 构造函数 Peca() 未定义

java - 我需要帮助在 java 中的两个字母之间添加辅音 ascii 值

c# - 用于检测和替换列表中的组的算法

c++ - Qt5 中字符串搜索的最佳容器

java - 来自谷歌的 ORM

python - 将号码拆分为可变费率计费的频段,即 "tiered pricing"