c++ - 如何在 log(n) 时间内找到数组任意范围内的最大值?

标签 c++ algorithm binary-search-tree indexed

<分区>

例如数组:{1, 5, 2, 3, 2, 10}

范围:0-1 答案:5 范围:2-4 答案:3 范围:0-5 答案:10 等等

最佳答案

如果数组未排序,则无法执行您要求的操作。

要找到最大值,您至少需要检查范围内的所有元素,这需要 O(n)。

如果您允许对数据进行某种形式的预处理,那就很容易了。您可以只构建一个包含答案的 n2 查找表。然后您可以在常数时间内找到任何范围的最大值。

关于c++ - 如何在 log(n) 时间内找到数组任意范围内的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467247/

相关文章:

python - 高效处理 Python 列表中的重复项

algorithm - 关于二叉搜索树的问题?

c++ - 我的构造函数主体中的简单指针语法问题

c++ - 不同的编程语言和调用约定

c++ - 找到两点之间角度的+/-符号的公式?

python - 了解 : "def rangeSumBST(self, root: TreeNode, L: int, R: int) -> int:" on leetcode

algorithm - 根据不同的选民人数调整选票

c++ - 二叉搜索树忘记我添加的每个节点

algorithm - 增广区间树

python - Python、PyQt4 中的 Qt C++ 代码