TreeMap<> 操作的时间复杂度:get() 和 subMap()

2024-01-31

基于这篇文章,TreeMap 操作的时间复杂度 - subMap、headMap、tailMap https://stackoverflow.com/questions/14290751/time-complexity-of-treemap-operations-submap-headmap-tailmap

subMap() 本身是 O(1),O(n) 来自迭代子映射。

那么,为什么要使用 get(key) 呢?

我们可以使用 subMap(key, true, key, true) 代替,

这是 O(1),迭代这个子映射也是 O(1)。

比 get(key) 更快,时间复杂度为 O(log(n))。这里出了点问题...


我们可以使用 subMap(key, true, key, true) 来代替,时间复杂度为 O(1)

这是对的

迭代这个子图也是 O(1)。

O(n) 来自问题。答案并没有暗示这一点,这很好,因为这不是真的。

迭代子树的时间复杂度为 O(log n + k),其中n是整个地图中的元素数量,并且k是子图中的元素数量。换句话说,当你开始迭代时,仍然需要 O(log n) 才能到达第一个位置。抬头getFirstEntry()实施看看它是如何完成的。

这使得你的方法的整体复杂度达到 O(log n),但它肯定会比简单的方法慢get,因为在此过程中创建并丢弃了一个中间对象。

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

TreeMap<> 操作的时间复杂度:get() 和 subMap() 的相关文章

随机推荐

  • matplotlib:图例标题的对齐

    在matplotlib中 如何调整图例标题 它始终居中 但我需要它与图例框左对齐 我尝试更改标题的文本艺术家的对齐方式 但没有效果 详细信息请参见以下示例 from pylab import x linspace 0 1 plot x x
  • Flutter:如何检查字符串中的字母是否相同[重复]

    这个问题在这里已经有答案了 我正在制作一个表单 供用户通过输入卖家的帐户名称和帐户类型来添加新卖家 但在将新卖家添加到firestore之前 它会检查该卖家是否存在 现在我的代码仅检查输入的名称是否与数据库中的名称非常相似 例如 数据库中有
  • Javafx Tile Pane,设置最大列数

    首先 我将解释我的目标 我想渲染一个像这样的表格 每个单元格的内容在执行时间中确定 但其大小固定为 13x13 因此 我的方法是创建一个平铺窗格 将列数设置为 13 并创建单元格 pane new TilePane pane setPadd
  • 读取多个.gz文件并识别哪一行属于哪个文件

    我正在读取多个 gz 文件以使用谷歌数据流进行处理 数据的最终目的地是BigQuery BigQuery 表对于 gz 文件内的 csv 文件中的每一列都有专用列 BQ 表中还有一个附加列 file name 它给出了该记录所属的文件名 我
  • 使用编程导航传递 props Vue.js

    我有一个 Vue 组件 有一个名为 title 的 prop 例如 完成某个操作后 我以编程方式导航到该组件 有没有办法以编程方式路由用户 同时设置 prop 值 我知道您可以创建这样的链接
  • 当 E_NOTICE 打开时,如何设置 PHP 不检查 $_GET 的未定义索引?

    当 E NOTICE 设置为 on 时 PHP 将报告数组的未定义索引 我想抑制这个错误 GET仅有的 除了预先添加每个之外 还有什么方法可以做到这一点 GET with 正确的解决方案是使用 isset 或数组键存在 https www
  • 为 Pycharm 中构建的项目运行 pyinstaller 时如何包含 venv 目录中的依赖项?

    我是 Python 和 PyCharm 新手 我在 OSX High Sierra 上运行 我在 PyCharm 中创建了一个使用 lxml 的项目 我已经安装了 lxml 4 1 1 作为项目依赖项 我可以在 myProject venv
  • 不使用其他特征文件调用的条件

    使用空手道 我想知道是否可以设置 If 条件而无需调用不同的功能文件 并且不使用 JavaScript gt 在条件中使用空手道功能文件代码块 例如应该可以做类似的事情吗 if variable 1 delay 3000 retry cli
  • Spring Data JPA 存储库中的解析和查询构建是哪个类?

    我已经在 spring 文档中阅读了这一行 Spring 数据存储库基础设施中内置的查询构建器机制 任何人都可以告诉这个查询构建器在 spring 中到底是哪个类吗 你应该看看org springframework data jpa rep
  • 嵌套对象最佳实践

    引用嵌套对象的最佳实践是什么 假设我有以下内容 class Outer private InnerA innerA getters and setters class InnerA private InnerB innerB getters
  • 我可以告诉 C# 可空引用一个方法实际上是对字段的空检查吗

    考虑以下代码 nullable enable class Foo public string Name get set public bool HasName gt Name null public void NameToUpperCase
  • 生成大型 pdf 文件,但主内存中没有内容

    我正在使用 iText 生成 pdf 格式的非常大的表格 生成这些表而不是将整个内容存储在内存中的最佳方法是什么 如果我只是将 for 循环中的以下大小增加到一百万 我就会耗尽内存 是否有比将整个内容都存储在内存中更好的方法来流式传输它 我
  • “类”在其自己的类型注释中直接或间接引用

    这是基本的 DI 模式 class Foo foo 1 class Bar constructor public Foo typeof Foo const foo new Foo class Baz extends Foo new Bar
  • 获取 Git 中远程分支的总数

    如何获取 Git 中远程分支的总数 为了获取所有远程分支 我在下面执行此语句 但我无法获取这些分支的计数 总数 我试过 count 但它不起作用 git branch r 我怎样才能得到这些的数量 就像是 git branch r wc l
  • Number.prototype.toLocaleString() 和 Intl.NumberFormat.prototype.format 之间有什么关系?

    我们正在尝试在我们的应用程序中使用本地化支持并查看toLocaleString 我们还看了Intl NumberFormat及其格式化方法 他们有什么关系吗 使用哪一个更好 来自 MDN 文档Number prototype toLocal
  • 删除行中重复的字符串

    出现以下问题 我有数据框 data1 其中包含多个条目的变量 data1 lt data frame v1 c test test bird bird bird car 现在我想删除每行中的重复条目 结果应该是这样的 data1 final
  • 在 Jquery 日期选择器中禁用 Next

    有没有其他方法可以让用户选择下个月 我已经完成了一些线程 但我不想通过使用本中指示的步骤功能来禁用下一个和上一个按钮link https stackoverflow com questions 3501808 jquery datepick
  • 如何通过 xcode 4.2 故事板正确使用模态视图控制器

    我想知道如何正确使用故事板以模态方式放置视图控制器 就我个人而言 我更喜欢与 xibs 合作 但故事板似乎越来越受欢迎 并且将成为未来的发展方向 我通常以模态方式放置视图控制器的方式是这样的 假设我们有 ViewControllerA 简称
  • Laravel 自定义身份验证过滤器

    我已在控制器中使用 Route Intended 将标准身份验证过滤器添加到多个路由 假设登录成功 过滤器 php Route filter auth function if Auth guest return Redirect guest
  • TreeMap<> 操作的时间复杂度:get() 和 subMap()

    基于这篇文章 TreeMap 操作的时间复杂度 subMap headMap tailMap https stackoverflow com questions 14290751 time complexity of treemap ope