需要一种数据结构来存储一组整数,以便可以在(log n)时间完成以下每个操作,其中n是该集合中元素的数量。
o Delection of the smallest element
o Insertion of an element if it is not already present in the set
以下哪个数据结构可用于此目的?
(A)可以使用堆,但不能使用平衡的二进制搜索树
(B)可以使用平衡的二进制搜索树,但不能使用堆
(C)平衡二进制搜索树和堆都可以使用
(D)既不能使用平衡的二进制搜索树也不能使用堆答案: (B)
解释:
首先,我们将讨论堆和平衡bst及其基本操作的时间复杂性,例如
插入,删除,查找。
堆:-
让我们将其视为最小堆
1)插入:O(logn)
2)删除最小值:O(logn)(只需将根替换为INT_MAX并进行堆化)
3)查找:O(n)
平衡的BST:-
1)插入:O(logn)
2)删除最小值:O(logn)
3)查找:O(logn)
陈述1:
1)可以在两个数据结构的O(logn)中删除最小元素
陈述2:
1)插入元素(如果集合中尚不存在)
在堆中,我们可以在O(n)中执行此操作,因为我们必须在此处执行线性搜索,而在BST中,我们可以在O(logn)中执行此操作
请参阅https://www.geeksforgeeks.org/data-structures-and-algorithms-set-3/的问题4
该解决方案由Anil Saikrishna Devarasetty提供
这个问题的测验