具有摊销 O(1) 删除和 O(log n) 搜索的数据结构

2024-02-06

我需要一个支持两种操作的数据结构 - 删除和搜索。现在,删除操作应该运行在摊销 O(1)时间,而搜索应该运行在O(log n) time.

搜索操作应该如下工作:查找指定的值,如果它在这里,则返回值本身。否则,返回最接近的较大值(返回有序后继)。

这个数据结构可能是什么?


它可以是一对数据结构:

  • 二叉搜索树,保存值
  • 哈希表,保存指向二叉搜索树中节点的指针

当你想要搜索时,在二叉搜索树中进行搜索的时间为 O(log n) 。 当要删除时,首先以摊销 O(1) 的方式在哈希表中查找节点,然后以摊销 O(1) 的方式在二叉搜索树中删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有摊销 O(1) 删除和 O(log n) 搜索的数据结构 的相关文章

  • C++ 映射插入和查找性能和存储开销

    我想存储一个映射integer的关键float内存中的值 我大约有 1 3 亿个键 相应地 也有 1 3 亿个值 我的重点是查找性能 我必须进行数百万次查找 C STL 库有一个map此类关联数组的类 我有几个问题map 存储开销是多少ma
  • 如何将多个值存储到一个键(java)

    我搜索一个可以存储多个键值对的数据结构 数据基本上是这样的 1 value 1 2 value 2 于是我想到了使用HashMap 遗憾的是 这对我不起作用 因为一个键可能会出现多个值 在上面的例子中 1 value 2 可能是另一个条目
  • 在Python中寻找坐标系中某些点之间的最短路径

    我编写了一个代码 可以在坐标系中的特定宽度和长度范围内生成所需数量的点 它计算并列出我使用欧几里德方法生成的这些点的距离矩阵 我的代码在这里 import pandas as pd from scipy spatial import dis
  • 算法 - 树中所有节点的最大距离

    所以 找到树中两个节点之间的最长路径相当容易 但我想要的是找到从节点出发的最长路径x到树中的另一个节点 对于所有x 这个问题也可以用以下方式表达 计算从给定的树中可以生成的所有有根树的高度 One way of course is to j
  • 将 n 个可变高度图像拟合为 3 个(相似长度)列布局

    我正在寻找类似于的 3 列布局piccsy com http piccsy com 给定许多宽度相同但高度不同的图像 有什么算法可以对它们进行排序以使列长度的差异最小 最好使用 Python 或 JavaScript 非常感谢您提前的帮助
  • 为什么使用 no-op 来填补 paxos 事件之间的空白是合法的?

    我正在学习Paxos算法 http research microsoft com en us um people lamport pubs paxos simple pdf http research microsoft com en us
  • 计算总和等于 k ​​的子集数量

    给定一个数组 我们需要找出总和恰好等于给定整数 k 的子集的数量 请针对这个问题提出一个最佳算法 这里不需要实际的子集 只需计数即可 该数组由整数组成 可以是负数也可以是非负数 例子 数组 gt 1 4 1 10 5 绝对值总和 gt 9
  • 读取4个点的坐标。他们做一个正方形吗?

    我计算点之间的距离 如果距离相等 则点构成一个正方形 否则不 仅当我按以下顺序读取坐标 A x y B x y C x y D x y 或相反时 我的代码才有效 但是如果我这样读 例如 A x y B x y D x y C x y 它将不
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • Python 将字符串组合成尽可能短的字符串?

    如果我有一个字符串列表 我想将它们组合成一个具有重叠字符的字符串 如果没有剩余的重叠字符串 请将其添加到末尾 这是一个过于简化的版本 input one two output twone 我正在寻找一种方法来对输入列表中的任意数量的字符串执
  • 为什么 n 按位和 -n 总是返回最右边的位(最后一位)

    这是Python代码片段 1 1 1 2 2 2 3 3 1 看来任何n n总是返回最右边 最后 位 我真的不知道为什么 有人可以帮助我理解这一点吗 这是由于负数以二进制表示的方式 称为二进制补码表示 创建某个数字 n 的补码 换句话说 创
  • 寻找 5 字节 PRNG 的种子

    这是一个古老的想法 但从那时起我就无法找到一些相当好的方法来解决它提出的问题 所以我 发明 了 见下文 一个非常紧凑的 在我看来 性能相当好的 PRNG 但我无法找出算法来为其在大位深度上构建合适的种子值 我当前的解决方案只是暴力破解 它的
  • javascript - 找到在一定限制下给出最大总和的子集(子集总和)

    我有一个包含一些整数值的数组 我需要获取它们的子集 该子集给出小于给定值的最大总和 假设我有这个数组 40 138 29 450 我想获得该数组的一个子集 使总和最大化 但低于用户给出的限制 比如说 250 在这种情况下 它应该返回 139
  • 我该如何解决? KnapSack - 值完全相同,但每个对象都有三个权重

    我在解决我的练习时遇到问题 我读到了动态规划和算法 我认为我的练习是 特定背包问题 我用暴力法解决了它 但我无法用动态规划解决它 我有一艘重300吨的船 背包 有些晶体本身含有 3 种物质 X Y Z 每种物质都有重量 并且所有晶体都具有相
  • 二进制堆中的删除

    我只是想学习二进制堆 并对在二进制堆中执行删除操作有疑问 我读到我们可以从二进制堆中删除一个元素 并且需要重新堆化它 但在下面的链接中却显示不可用 http en wikibooks org wiki Data Structures Tra
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • 二分查找问题? [复制]

    这个问题在这里已经有答案了 可能的重复 实施二分查找有哪些陷阱 https stackoverflow com questions 504335 what are the pitfalls in implementing binary se
  • 正则表达式等价

    有没有办法找出两个任意正则表达式是否等价 对我来说看起来很复杂的问题 但可能有一些 DFA 简化机制之类的 要测试等价性 您可以计算的表达式并进行比较
  • 如何计算加权平均值?

    我的语言是PHP 但是算法应该是相当通用的 我有一个关联数组 比方说 评级和评级次数 ratings array 1 gt 1 2 gt 3 3 gt 6 4 gt 3 5 gt 3 这相当于 1 2 2 2 3 3 3 3 3 3 4 4
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set

随机推荐

  • ASP.NET MVC 3 模型绑定资源

    我正在寻找一个很好的资源 它非常全面地描述了模型绑定如何与 ASP NET MVC 3 或在较小程度上 MVC 2 和不同的方法一起工作 除了零碎的内容之外 我找不到关于这个主题的任何好的资源 网上的信息更多的是关于 如何做 X 而不是解释
  • ASP.NET MVC3 - 您如何处理探测请求?

    我们的网站上线了 当然 我们开始收到大量的探测请求 喜欢 blog wp login php admin admin php etc 所以问题是 你用它们做什么 现在 在每种情况下都会抛出 404 错误 并且 elmah 会发送有关该错误的
  • 为什么我们不能在某个进程上接受()套接字并从其子进程中接收()数据?

    我正在尝试在 Linux 上实现一个简单的 Web 服务器 它连接到客户端 浏览器 接收来自客户端的一些请求 例如 GET 然后用所需的文件发回响应 我正在使用套接字通信 我想在服务器启动时创建一个工作进程 子进程 池 其工作是处理传入的请
  • 如何将肥皂基本身份验证请求添加到 WSDL

    我怎样才能对 WSDL 进行 Soap AUTH BASIC 身份验证 以便阅读 WSDL 的人知道我需要针对特定 方法进行该操作 使用下面的示例 我成功地将 SOAP 基本身份验证传递到另一端的 php Web 服务 PHP net So
  • PHP imageftbbox imagettftext - 简单的字母间距/字距调整?

    有谁知道使用 imagettftext 进行字母间距 字距调整的简单方法 我的脚本按照我现在的需要工作 但我确实可以使用具有 CSS 样式的生成文本 letter spacing 0 01em 所以它与页面上的标准文本相匹配 但我没有看到任
  • 如何选择列表中所有无序的元素?

    这个问题源于评论里的讨论这个答案 https stackoverflow com questions 1390832 how to sort nearly sorted array in the fastest time possible
  • 如何使用executeReader()方法检索一个单元格的值

    我需要执行以下命令并将结果传递给标签 我不知道如何使用 Reader 来做到这一点 有人可以帮我吗 String sql SELECT FROM learer WHERE learer id index SqlCommand cmd new
  • 使用 CoreData 嵌套撤消组

    我想将撤消管理器添加到 coredata 支持的 iPhone 应用程序中 当用户尝试添加新对象 通过点击 按钮 时 我加载一个新的模式视图控制器并在 viewDidLoad 中启动一个新的撤消组 当用户按下 取消 按钮时 我想回滚 can
  • 删除 Spark 数据框中重复的所有记录

    我有一个包含多列的 Spark 数据框 我想找出并删除列中具有重复值的行 其他列可能不同 我尝试使用dropDuplicates col name 但它只会删除重复的条目 但仍会在数据框中保留一条记录 我需要的是删除最初包含重复条目的所有条
  • Google 街景中像素距地面的高度/标高

    我正在寻找谷歌街景中每个像素距地面的高度 我知道可以计算的几件事是 像素间距 https stackoverflow com questions 21591462 get heading and pitch from pixels on s
  • 删除特定的kafka消息

    我想指示 kafka 尽可能删除一条消息 如果使用键和日志压缩 可以将键设置为消息 ID 并将消息内容设置为 null 但我寻找更直接的东西 不依赖于设置密钥 例如通过消息 ID None
  • 如何在 NSMenuItem 内绘制内联样式标签(或按钮)

    当 App Store 有更新时 它会在菜单项中显示一个内联样式元素 如下面屏幕截图中的 1 new 另一个我们可以看到这种菜单的地方是10 10 Yosemite的分享菜单 当您安装任何添加新共享扩展的应用程序时 共享菜单中的 更多 项目
  • AWS SSO、Codecommit(GRC git 克隆链接)和 npm install

    单点登录 SSO 在 AWS 账户上实施 运行后aws sso login 使用 GRC 链接 克隆节点和存储库是可行的 然而 运行npm install在 repo 中会导致不同的错误 前任 包 json dependencies com
  • 如何处理极长的LSTM序列长度?

    我有一些数据以非常高的速率 大约每秒数百次 采样 对于任何给定实例 这会导致平均序列长度很大 约 90 000 个样本 整个序列有一个标签 我正在尝试使用 LSTM 神经网络将新序列分类为这些标签之一 多类分类 然而 使用具有如此大序列长度
  • 如何更改浮动占位符的角度材料表单字段中的字体大小

    下面是角材料的形状场 当占位符正常和浮动时 如何为占位符添加 2 个不同的自定义字体大小 字体大小 20px 正常时 字体大小 13px 当它浮起来并变小时
  • 推送路线时将对象作为 prop 传递

    该功能位于路由器视图之外的组件中 goToMarkets this router push path markets params stock this model 但该道具在 市场 组件中未定义 Router const routes p
  • 如何使用 es6 js 类表示法自动递增 id 值?

    我在 es6 中的类方面遇到一些问题 每次创建对象时 我都需要自动递增 id 值 真的不明白我如何声明变量 为 id 赋值 然后递增增量变量 class Rectangle constructor name width height x y
  • 将报告导出为 PDF 时更改字体

    我在用着贾斯珀软件工作室 5 2 我做了一份报告快递新字体 当我将其导出到 PDF 时 它会将字体更改为Arial 我只使用Studio工具 当我预览报告时一切正常 但当我导出时就会发生这种情况 我可以如何处理我的报告以导出快递新 font
  • 在 Maxima 列表中查找最大值和索引?

    我有一个 maxima 列表 例如 x 1 3 7 98 211 3 2 44 23 我需要找到列表的最大值以及最大值位于哪个位置 我唯一想到的是将列表重写为序列并应用 max 命令 max first x second x last x
  • 具有摊销 O(1) 删除和 O(log n) 搜索的数据结构

    我需要一个支持两种操作的数据结构 删除和搜索 现在 删除操作应该运行在摊销 O 1 时间 而搜索应该运行在O log n time 搜索操作应该如下工作 查找指定的值 如果它在这里 则返回值本身 否则 返回最接近的较大值 返回有序后继 这个