在O(1)时间中找到数组中的k个最大元素

时间:2019-03-22 16:06:01

标签: algorithm data-structures stack

通过使堆栈类具有辅助数据结构来跟踪每个push()中的k个最大/最小值,是否有O(1)时间复杂度来查找数组中的k个最大或最小数。 pop()。由于检索为O(1),因此在get方法中返回k个元素

3 个答案:

答案 0 :(得分:0)

如果您正在寻找众所周知的数据结构,则可以发现Max-HeapMin-Heap很有用。您可以找到有关here的更多信息。

更新

当您将问题从最大和最小更新为最大k时,可以将数据预处理到排序后的数组中,然后使用插入排序策略插入新值。然后,您可以在k中报告O(k)的最大值(如果k是常数,则将在O(1)中报告)。

答案 1 :(得分:0)

您可以尝试下面的链接,该链接讨论有关找到最大数量的信息 https://www.geeksforgeeks.org/k-largestor-smallest-elements-in-an-array/

答案 2 :(得分:0)

是的,只有当数组按排序顺序时,才能按O(1)复杂度找出第K个最大元素或最小元素。