需要一种数据结构来存储一组整数,以便以下每个操作都可以在 (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)既不能使用平衡二叉搜索树,也不能使用堆答案:(乙)
解释:
首先,我们将讨论堆和平衡 bst 及其基本操作的时间复杂度,例如
插入、删除、查找。
堆:-
让我们将其视为最小堆
1) 插入:O(logn)
2) 删除 Min: O(logn)(只需将 root 替换为 INT_MAX 和 heapify)
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 提供
这个问题的测验