Tag: 数据结构

实现push_rear(),pop_front()和get_min()都是常量操作的队列

我碰到过这个问题: 实现一个push_rear(),pop_front()和get_min()都是常量操作的队列。 我最初想到使用get_min()具有O(1)复杂度的min-heap数据结构。 但push_rear()和pop_front()将是O(log(n))。 有没有人知道什么是最好的方式来实现这样一个队列,其中有O(1)push(),pop()和min()? 我search了这个,并想指出这个algorithm极客线程 。 但似乎没有任何解决scheme遵循所有3种方法的常量时间规则:push(),pop()和min()。 感谢所有的build议。

关键值对数据结构的最佳实现?

所以我最近一直在用C#开发,所有的generics集合都让我有点困惑。 假设我想要表示一个数据结构,其中树的头部是一个关键值对,然后在这个关键值对下面有一个可选的列表(但不多于这些关键值)。 这会适合吗? public class TokenTree { public TokenTree() { /* I must admit to not fully understanding this, * I got it from msdn. As far as I can tell, IDictionary is an * interface, and Dictionary is the default implementation of * that interface, right? */ SubPairs = new Dictionary<string, string>(); } public […]

为什么.NET中没有Tree <T>类?

.NET中的基类库对于集合(List,Queue,Stack,Dictionary)具有一些优秀的数据结构,但奇怪的是它不包含二叉树的任何数据结构。 对于某些algorithm来说,这是非常有用的结构,比如那些利用不同的遍历path的algorithm。 我正在寻找一个正确的书面,免费的实施。 我只是盲目的,而不是find它…它被埋在BCL的某个地方吗? 如果没有,有人可以推荐一个免费或开源C#/ .NET二进制树库? 最好使用generics的一个。 编辑:澄清我在找什么。 我对在内部使用树的有序字典集合不感兴趣。 实际上,我对二叉树感兴趣,它揭示了它的结构,以便您可以像提取子树一样执行操作,或者在节点上执行后缀遍历。 理想的情况下,这样的一个类可以扩展到提供特定树木(即红/黑,AVL,平衡等)的行为。

为什么斐波那契数列在计算机科学中有重要意义?

斐波纳契数字已经成为计算机科学学生recursion的一个stream行的介绍,有一个强有力的论点是他们坚持自然。 由于这些原因,我们很多人都熟悉它们。 他们也存在于计算机科学领域。 以惊人的高效数据结构和基于序列的algorithm。 有两个主要的例子可以想到: 斐波纳契堆的运行时间比二项堆更好。 斐波那契search在有序数组上使用二分search共享O(logN)运行时间。 这些数字有一些特殊的性质,使它们比其他数字序列有优势吗? 这是空间质量吗? 他们还有什么其他可能的应用? 对我来说这似乎很奇怪,因为在其他recursion问题中有很多自然数序列,但是我从来没有见过一个加泰罗尼亚堆。

在二叉search树的定义中是否允许重复键?

我试图find一个二叉search树的定义,我一直在find不同的定义。 有人说,对于任何给定的子树,左侧的子键小于或等于根。 有人说,对于任何给定的子树,正确的子键大于或等于根。 而我以前的大学数据结构书说:“每个元素都有一个关键,没有两个元素具有相同的关键”。 有没有bst的普遍定义? 特别是关于如何处理具有相同密钥的多个实例的树。 编辑:也许我不清楚,我看到的定义是 1)left <= root <right 2)左<root <=右 3)左<root <右,这样不存在重复的键。

TreeMap或HashMap?

何时使用hashmaps或treemaps? 我知道我可以使用TreeMap遍历元素,当我需要他们进行sorting。 但是,只是呢? 当我只想查阅地图或者某些最佳的具体用途时,没有优化。

使用bloom滤镜有什么好处?

我正在阅读bloom filters,他们看起来很傻。 任何你可以使用布隆filter来完成的事情,你可以用更less的空间,更高效地完成,使用单个散列函数而不是多个,或者看起来就是这样。 为什么要使用布隆filter,它如何有用?

纯function地图和集合的统计performance

给定一个数据结构规范,如具有已知复杂性界限的纯函数映射,必须在几个实现之间进行select。 有一些关于如何挑选合适的民间传说,例如红黑树通常被认为是更快的,但AVL树在工作量方面有更好的performance,并且有很多的查找。 是否有这种知识的系统介绍(出版论文)(与集合/地图有关)? 理想情况下,我希望看到在实际软件上进行统计分析。 例如,可以得出结论:有N种典型的地图使用情况,并列出每种地图的input概率分布。 是否有系统的基准testing图,并设置不同分布的input性能? 是否有实现使用自适应algorithm来改变表示取决于实际使用情况?

Linq – SelectMany混乱

从我从SelectMany的文档中所理解的,可以用它来产生一个1-many关系的(扁平的)序列。 我有以下课程 public class Customer { public int Id { get; set; } public string Name { get; set; } } class Order { public int Id { get; set; } public int CustomerId { get; set; } public string Description { get; set; } } 然后我尝试使用查询expression式语法来使用它们 var customers = new Customer[] { new Customer() […]

实际使用不同的数据结构

关于数据结构有很多讨论,但是我找不到一个简单的数据结构列表和它们的实际应用。 我正在努力学习面试,我想这会帮助我和其他许多人。 我正在寻找这样的东西: 数据结构 – 示例/用于 哈希表 – 快速数据查找…然后给出一个例子 arrays – … 二叉树 – … 如果有这样的资源,请让我知道。 谢谢! 编辑:我的意思是维基百科是好的,但在大多数页面,他们并没有列出实际用途。 我正在寻找更多的东西。