📜  门| GATE-CS-2003 |第 63 题

📅  最后修改于: 2021-09-26 04:07:22             🧑  作者: Mango

需要一种数据结构来存储一组整数,以便以下每个操作都可以在 (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 提供
这个问题的测验