【发布时间】:2014-08-27 04:28:52
【问题描述】:
我需要一次迭代中未排序数组中的第二个最大元素。 例如:数组是 3 9 8 2 0 -4 87 45 3 2 1 0 答案应该是45,在一次迭代中找到最大元素非常简单,但是如何在同一迭代中找到第二个最大值,或者数组的fort迭代后的恒定时间。
【问题讨论】:
-
完全一样,你只存储2个元素。
-
顺便说一句,在一般情况下要找到数组中的第 k 个最大元素,您可以维护一个由数组中的 k 个元素组成的最小堆。遍历数组后,堆应包含数组中的 k 个最大元素,如果您开始清空堆,则元素应按升序弹出。复杂度应为 O(n + klogk)。
标签: arrays algorithm max array-algorithms