通过使堆栈类具有辅助数据结构来跟踪每个push()
中的k个最大/最小值,是否有O(1)时间复杂度来查找数组中的k个最大或最小数。 pop()
。由于检索为O(1),因此在get方法中返回k个元素
答案 0 :(得分:0)
如果您正在寻找众所周知的数据结构,则可以发现Max-Heap
和Min-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个最大元素或最小元素。