有哪些鲜为人知但有用的数据结构?

2023-12-23

有一些数据结构确实有用,但大多数程序员都不知道。他们是哪些?

每个人都知道链表、二叉树和哈希,但是呢?跳过列表 http://en.wikipedia.org/wiki/Skip_list and 布隆过滤器 http://en.wikipedia.org/wiki/Bloom_filter例如。我想了解更多不常见但值得了解的数据结构,因为它们依赖于伟大的想法并丰富了程序员的工具箱。

PS:我也对诸如此类的技术感兴趣跳舞链接 http://en.wikipedia.org/wiki/Dancing_Links它巧妙地利用了通用数据结构的属性。

EDIT: 请尝试包括链接到更详细地描述数据结构的页面。另外,尝试添加一些词why数据结构很酷(如乔纳斯·科尔克 https://stackoverflow.com/questions/500607/what-are-the-lesser-known-but-cool-data-structures已经指出了)。另外,尝试提供每个答案一个数据结构。这将允许更好的数据结构仅根据他们的投票浮到顶部。


Tries http://en.wikipedia.org/wiki/Trie,也称为前缀树或暴击位树 http://cr.yp.to/critbit.html,已经存在了 40 多年,但仍然相对不为人所知。尝试的一个非常酷的用法在“TRASH - 动态 LC-trie 和哈希数据结构 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.96.2143”,它结合了 trie 和哈希函数。

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

有哪些鲜为人知但有用的数据结构? 的相关文章

  • 查找其索引的乘积可被另一个数字 X 整除的对的数​​量

    给定一个数组和某个值 X 找到满足以下条件的对的数量 i lt j a i a j and i j X 0 Array size lt 10 5 我想这个问题有一段时间了 但只能想出蛮力解决方案 通过检查所有对 这显然会超时 O N 2 t
  • 迭代和遍历有什么区别?

    过去几周我一直在学习迭代器 我仍然不明白迭代链接列表和遍历链接列表之间的主要区别 我知道遍历意味着遍历 访问每个元素 链接列表 并且在迭代时基本上做同样的事情 但是有什么不同 为什么不能遍历所有内容 标准库数据结构 遍历 只是意味着遍历数据
  • 从 Presto 中的 JSON 列获取特定值

    我有一个带有 JSON 列的表points其中一行为 0 0 2 1 1 2 2 0 5 15 1 2 20 0 7 我想获取键的值 1 and 20 并将它们存储为别名 例如first and second在查询中 到目前为止我所做的是
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 用矩阵变换 3D 向量的方法

    我一直在阅读一些关于用矩阵转换 Vector3 的文章 并且正在努力深入研究数学并自己编码 而不是使用现有代码 无论出于何种原因 我的学校课程从未包含矩阵 所以我正在填补我的知识空白 值得庆幸的是 我认为我只需要一些简单的东西 背景是我正在
  • 计算机如何评估巨大的数字?

    例如 如果我输入一个值 1234567 98787878 Wolfram Alpha 可以为我提供许多细节 这包括小数近似 总长度 最后一位数字等等 您如何评估如此大的数字 据我了解 编程语言必须具有特殊的数据类型才能存储数字 更不用说将其
  • 如何以最小化每个分区总和的最大值的方式对整数数组进行分区?

    输入是正整数或空整数的数组 A 和另一个整数 K 我们应该将 A 划分为 K 个连续元素块 我所说的 划分 是指 A 的每个元素都属于某个块 并且 2 个不同的块不包含任何共同元素 我们将块的总和定义为该块的元素的总和 目标是在 K 个块中
  • 如何为所有语言创建字母数字正则表达式?

    我今天遇到了这个问题 此正则表达式仅匹配英语 a zA Z0 9 如果我需要支持这个世界上的任何语言 我应该编写什么正则表达式 如果您使用字符类简写和 Unicode 识别正则表达式引擎 您就可以做到这一点 这 wclass 匹配 单词字符
  • 获取Windows下新线程/删除线程的通知

    创建 DLL 时 您可以在 DllMain 函数 DLL THREAD ATTACH DLL THREAD DETACH 中获取有关新线程 退出线程的通知 有没有办法在 非托管 可执行文件中从 Windows 获取这些或等效通知 是的 在您
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 承诺的反面是什么?

    承诺代表将来可能可用 或无法实现 的值 我正在寻找的是一种数据类型 它表示将来可能变得不可用的可用值 可能是由于错误 Promise a b TransitionFromTo
  • 安全网络登录示例/教程[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 为 Web 应用程序创建登录表单的方法有很多种 但大多数方法都存在这样或那样的缺陷 密码以明文形式传输
  • 是否可以证明序列是否是随机的?

    考虑以下输入 1 1 2 3 5 8 这不是随机的 2 4 8 16 32 这都不是 4 1 2 11 5 9 这个看起来像随机序列 我想问是否有这样的算法来证明输入是否是随机的 不 没有这样的证明 如果你有完全随机的数字 则每个长度为 n
  • 将所有奇数位置的元素移动到左半部分,将偶数位置的元素移动到右半部分

    给定一个包含正整数和负整数的数组 将所有奇数索引元素移动到左侧 将偶数索引元素移动到右侧 问题的难点是在维持秩序的同时就地做 e g 7 5 6 3 8 4 2 1 输出应该是 5 3 4 1 7 6 8 2 如果顺序不重要 我们可以使用快
  • 如何测试哈希函数?

    有没有办法测试哈希函数的质量 我希望在哈希表中使用时具有良好的分布 如果这可以在单元测试中验证 那就太好了 EDIT 为了澄清 我的问题是我已经使用了longJava 中的值的方式是第一个 32 位编码一个 ID 第二个 32 位编码另一个
  • 密码哈希

    我正在创建一个存储用户密码的网络应用程序 我想知道程序员可以用来哈希密码的最佳方法 算法是什么 关键的强化技术 例如bcrypt http en wikipedia org wiki Bcrypt or PBKDF2 http en wik
  • 与 Perl 和 Ruby 比较的相似语言特性 __END__

    背景 Perl 和 Ruby 有 END and DATA 允许将任意数据直接嵌入源代码文件中的标记 尽管这种做法可能不适合通用编程用途 但它对于例行任务的 一次性 快速脚本非常有用 问题 还有哪些其他编程语言支持相同或类似的功能 它们是如
  • 如何检查 AJAX 请求的真实性

    我正在设计一个网站 让用户尽快解决谜题 JavaScript 用于为每个谜题计时 当谜题完成时 毫秒数通过 AJAX 发送到服务器 如何保证服务器收到的时间不是用户伪造的 我不认为基于会话的真实性令牌 Rails 中用于表单的那种 就足够了
  • 单源最短路径,包含每条边的距离和权重

    假设有一个无向图 连接任意两个节点的每条边都有两个权重 即距离和成本 我想要获得最短路径 但也要确保不超出一定的成本 我尝试过实现 Djikstra 如果超出成本 则简单地回溯 由于缺乏更好的术语 直到遍历整个图表 但是 我正在寻找比这更快
  • 在哪里可以了解有关“蚁群”优化的更多信息?

    我已经阅读了一段时间关于使用 蚁群 模型作为优化各种类型算法的启发式方法的内容 然而 我还没有找到一篇文章或书籍以介绍性的方式甚至详细地讨论蚁群优化 谁能给我指出一些资源 让我可以更多地了解这个想法 如果你懂德语 是的 抱歉 我和一个朋友写

随机推荐

  • 错误:找不到符号导入 androidx.navigation.fragment.navArgs

    我正在网站上做 用 Java 构建你的第一个 Android 应用程序 https codelabs developers google com codelabs build your first android app 8 https c
  • 我收到此错误“ValueError:形状 (None, 256, 256, 2) 和 (None, 256, 256, 1) 在尝试训练分割模型时不兼容

    我正在研究图像分割 TensorFlow 问题 数据集中的训练图像为 50 测试图像为 51 在训练我的模型时 我收到以下错误 ValueError Shapes None 256 256 2 and None 256 256 1 are
  • 为什么在 bash 中使用短路布尔逻辑而不是 if/then/else?

    所以我现在在上周做了很多我想做的 bash 编程 我见过使用的代码 condition and if condition then fi类型构造 据我所理解 condition 相当于if condition then fi 但是 对于前一
  • 列切片和行切片哪个好?

    Scipy 有不同类型的矩阵 其中两个是列稀疏矩阵和行稀疏矩阵 列稀疏矩阵支持快速列切片操作 行稀疏矩阵支持快速行切片操作 但如果操作 a i 是列或行切片操作 我就不是 有什么帮助吗 没有什么比亲自尝试更好的了 In 1 import n
  • Java - 如何将数字以空格分隔的字符串拆分为变量?

    我得到了字符串 23 45 我需要获取 2 个值为 23 的变量 int a 和值为 45 的 int b 如果您的输入字符串名称是 in 那么我们将有 String in 23 45 String s in split int out n
  • Javascript Scorm 1.2 API [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要使现有的 LMS Scorm 1 2 兼容 仅限基本调用 有谁知道有任何免费的脚本 这样就不必从
  • 备份 cassandra 集群的最佳实践是什么?

    我有一个 cassandra 集群 在多个数据中心有大约 20 个节点 我想备份 cassandra 数据库 我希望即使现有集群中的每个节点同时被流星击中 也可以将备份恢复到新集群 为了能够从头开始恢复 cassandra 数据库 我到底需
  • 在函数对象内分配函数而不调用函数本身

    我试图在函数对象属性中分配一个函数 而不实际调用 then 函数本身 例如 我有以下函数对象类定义 function objectOne name value id this name name this value value this
  • JavaScript 中“new Array(..)”和“[..]”之间的区别? [复制]

    这个问题在这里已经有答案了 Is var myCars new Array Saab Volvo BMW and var myCars Saab Volvo BMW 一模一样 是的 对于这种情况 它们是相同的 如果您只有一项并且是数字项 那
  • 如何从 SVN 中删除现有的变更列表

    我通过执行以下操作创建了更改列表 svn changelist my changes 向其中添加文件 然后提交更改列表 svn ci changelist my changes keep changelists 所以现在 我 保留 了我的更
  • .NET Framework 4.5 是否提供 SSE4/AVX 支持?

    我想 我听说过 但不知道在哪里 upd 我告诉过JiT 不 NET 中不存在您可以自己编写机器代码的情况 代码生成完全取决于即时编译器 它当然能够根据机器处理器的功能定制其代码生成 ngen exe 必须始终在目标计算机上运行的重要原因之一
  • 如何更改数据框中的时区?

    我正在使用将 csv 加载到数据框中 str lt readLines Messages csv n 1 skipNul TRUE matches lt str match str pattern s 0 9 2 0 9 2 0 9 4 s
  • tmux 使用当前激活的 conda 环境创建新窗格或窗口

    当我使用 tmux 创建新窗格或窗口时 我想使用我刚刚使用的相同 conda 环境 IE 我现在使用名为 conda envXXXenv 我用Ctrl b 要创建一个新窗格 我想要的是新创建的窗格由 conda env 激活XXXenv 事
  • oracle - 在 unpivot 查询中查询 NULL 值

    我想从 Oracle DB 中获取记录 其中列值为NULL 我也在使用unpivot在我的查询中 不知何故NULL由于以下原因 值未被选择unpivot关键词 您能帮我了解如何在使用时获取相同的行吗unpivot EDIT SELECT a
  • 将变量传递到 jinja 导入或包含父 html 文件

    场景是 你有一个名为 person 的变量 其中包含许多字段 如姓名 地址等 你想将其传递给部分 html 例如 此解决方案可能是搜索客户的结果 片段 html div ul li span name span span address s
  • 从代码中获取Android WiFi“net.hostname”

    当 Android 设备连接到 WiFi AP 时 它会使用如下名称来标识自己 android cc1dec12345e6054 如何从 Android 应用程序中获取该字符串 不是为了改变它 只是为了读出 EDIT 这是我的路由器网络界面
  • 表单中的 SwiftUI 选择器不显示复选标记

    我在表单中嵌入了一个选择器 但是我无法让它工作 因为它在表单中显示复选标记和选定的值 NavigationView Form Section Picker selection currencyCode label Text Currency
  • Kafka Stream与KTable一对多关系Join

    我有一个卡夫卡流 比如说博客和一个卡夫卡表 比如说与这些博客相关的评论 来自 kafka 流的键可以映射到 Kafka 表中的多个值 即一个博客可以有多个评论 我想将这两个连接起来并创建一个带有评论 id 数组的新对象 但是当我进行连接时
  • 使用 FormBuilder Angular 2 绑定选择列表

    在 Angular 2 中 创建一个简单的应用程序 但是当 formBuilder 在选择列表的情况下附加了 DOM 控件时 第一个选项将变为空白 即使我在 formBuilder 中提供了一些初始值 该值也不会出现在 DOM 元素中 在F
  • 有哪些鲜为人知但有用的数据结构?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 有一些数据结构确实有用 但大多数程序员都不知道 他们是哪些 每个人都知道链表 二叉树和哈希 但