当前位置: 首页 > 知识库问答 >
问题:

删除小于k in O(logn)的元素的数据结构,其中N是元素数

储峻
2023-03-14

如何实现以下函数都在O(log N)中的数据结构

插入(x)-将整数添加到集合

成员(x)-检查集合是否包含整数x

删除(x)-从集合中删除整数x

deleteLessThan(x)删除所有等于或小于k的数字

我唯一能想到的就是使用某种平衡的BST来获取插入、成员和删除的O(logn)。

deleteLessthan()函数看起来像这样:找到大于k的最小元素,删除它的左子树,然后重新平衡。但是,如果删除BST的一个子树,是否有可能在O(log N)中重新平衡BST?

共有1个答案

漆雕伟志
2023-03-14

摊销后的日志N足够好吗?在这种情况下,您可以使用splay树。除删除元素以外的所有操作

如果您允许摊销,您可以很容易地解释在O(M)时间内删除了N个节点中的M个。

 类似资料:
  • 问题内容: 我有一个结构“ Guest”,其中包含聚会客人的元数据(唯一的ID,名称,姓氏以及作为该客人的朋友的客人的唯一ID的列表。 我有以下代码从朋友列表中删除ID: 问题是:我要删除的元素被元素的移位覆盖,但是切片不会变短。而是将切片的最后一个元素相乘。 举一个例子:是。我打电话后,结果却不是理想的。 那么,我在做什么错呢? 问题答案: 任何打算/确实修改接收器的方法都必须使用指针接收器。

  • 本文向大家介绍从数据结构中的最大HBLT中删除任意元素,包括了从数据结构中的最大HBLT中删除任意元素的使用技巧和注意事项,需要的朋友参考一下 从“最大”或“最小” HBLT中删除任意节点不是标准操作。优先队列或HBLT。如果要从HBLT中删除一个节点,例如K,则必须遵循以下规则。 从树上分离以K为根的子树,并将其替换为节点K子树的融合体。 从K到根的路径更新s的值,并根据需要交换此路径上的子树以

  • 本文向大家介绍从数据结构中的最大HBLT中删除最大元素,包括了从数据结构中的最大HBLT中删除最大元素的使用技巧和注意事项,需要的朋友参考一下 在Max HBLT中,将根放在根上。如果根被删除,则两个最大的HBLT(即左和右)将分开。通过再次将这两个Max HBLT融合在一起,我们可以将它们合并为一个。因此,在融合之后,所有元素都将存在,除了已删除的元素。

  • 我们被要求创建一个在O(logn)中最坏情况下运行的算法 该算法由3个函数组成:

  • 删除数组中的元素,直到传递的函数返回 true 。 返回数组中的其余元素。 循环访问数组,使用 Array.slice() 在数组中从第一个元素开始删除,直到函数的返回值为 true。 返回其余的元素。 const dropElements = (arr, func) => { while (arr.length > 0 && !func(arr[0])) arr = arr.slice(1)

  • 问题内容: 我在MongoDB中有一个文档,其中一个看起来像这样: 在每个文档中,我需要找到最小的项目并将其删除。所以应该是这样的: 看起来应该在这里使用函数,但是我不能再说了。 如何找到数组中的最小元素并将其删除? 我正在使用MongoDB和Pymongo驱动程序。 问题答案: 如果您不限于一步就完成查询,则可以尝试: 步骤1)将聚合函数与$ unwind和$ group运算符配合使用,以查找每