【问题标题】:What is the best time complexity data structure for finding max value in an array?在数组中查找最大值的最佳时间复杂度数据结构是什么?
【发布时间】:2016-05-06 20:03:07
【问题描述】:

不是遍历整个数组需要 O(n) 时间,找到最大值的最佳数据结构是什么?例如。二叉搜索树的平均情况为 O(log n),最坏的情况为 O(n)。有没有 O(log n) 最坏的情况?

【问题讨论】:

  • 这个问题需要澄清。如果 find 时间是唯一的约束,您可以简单地通过将负担转移到插入操作来保持数组排序,将对象插入正确的位置。相关地,您可以使用heap
  • 你的意思是最大堆吗?
  • 是的,对于 find max 来说,二进制堆是 O(1) 对吗?
  • @Naomi 确实如此

标签: tree time-complexity binary-search-tree


【解决方案1】:

给定一个未知数组,不可能在小于O(n) 的时间内找到最大值,因为只有看到所有n 值才能得出结论。无论您的访问顺序如何,最大值始终是最后一个。

将值传输到诸如二叉搜索树或堆之类的数据结构将无济于事,相反。

【讨论】:

  • 为什么没有帮助?最大值将始终位于最大堆的顶部,对吧?
  • @Naomi:构建堆需要O(n)。你无法击败O(n)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 2015-03-06
  • 2021-12-29
  • 2010-10-13
  • 2011-10-16
  • 2019-03-31
相关资源
最近更新 更多