Tag: 数据结构

地图和字典有什么区别?

Map和Dictionary什么区别? 我不是要求他们是如何在X或Y语言中定义的(这似乎是人们一般在这里问到的),我想知道它们在理论上有什么不同。 我知道一个Map是一个将键映射到值的对象。 不是一个Dictionary是一样的吗? 他们有什么区别?

使用两个队列实现堆栈

之前有人问过类似的问题,但这里的问题与之相反,使用两个队列作为堆栈。 这个问题… 给定两个标准操作(入enqueue , dequeue , isempty , size )的isempty ,用标准操作( pop , push , isempty , size )实现一个栈。 应该有两个版本的解决scheme。 版本A :推送物品时堆叠应该是有效的; 和 版本B :popup一个项目时,堆栈应该是有效的。 我比任何特定的语言实现更感兴趣的algorithm。 不过,我欢迎用我熟悉的语言( java , c# , python , vb , javascript , php )expression的解决scheme。

HyperLogLogalgorithm如何工作?

我最近在业余时间已经学习了不同的algorithm,而我遇到的一个看起来非常有趣的algorithm叫做HyperLogLogalgorithm – 它估计列表中有多less独特的项目。 这对我来说特别有意思,因为当我看到“基数”值(直到最近我一直认为它是不计算的)时,才使我回到了MySQL日子。 所以我知道如何在O ( n )中编写一个algorithm来计算一个数组中有多less个独特的项目。 我用JavaScript写了这个: function countUniqueAlgo1(arr) { var Table = {}; var numUnique = 0; var numDataPoints = arr.length; for (var j = 0; j < numDataPoints; j++) { var val = arr[j]; if (Table[val] != null) { continue; } Table[val] = 1; numUnique++; } return numUnique; } 但问题是,我的algorithm,而O ( […]

如何实现具有多个键的地图?

我需要一个像Map一样的数据结构,但是使用多个(不同types的)键来访问它的值。 (让我们不要太笼统,让我们说两个键) 密钥保证是唯一的。 就像是: MyMap<K1,K2,V> … 使用如下方法: getByKey1(K1 key)… getByKey2(K2 key)… containsKey1(K1 key)… containsKey2(K2 key)… 你有什么build议吗? 我能想到的唯一的事情是: 写一个内部使用两个地图的类。 编辑有些人build议我使用一个元组 ,一对或类似的Java的地图的关键,但这不适合我: 如上所述,我必须能够仅通过指定的两个键中的一个来search值。 地图使用密钥的哈希码并检查其相等性。

如何在Java中创build链接列表数据结构?

在Java中build立链表的最好方法是什么?

如何实现一个三栈的队列?

我在algorithm书( algorithm,由罗伯特·Sedgewick和凯文·韦恩第四版)中遇到了这个问题。 排队三堆。 实现一个有三个堆栈的队列,以便每个队列操作都有一个常量(最坏情况)的堆栈操作。 警告:难度高。 我知道如何创build2个堆栈的队列,但是我找不到3个堆栈的解决scheme。 任何想法 ? (哦,这不是作业:))

testing列表是否包含Clojure中的特定值

在Clojure中testing列表是否包含给定值的最好方法是什么? 特别是contains?的行为contains? 目前令我困惑的是: (contains? '(100 101 102) 101) => false 我显然可以写一个简单的函数来遍历列表并testing它是否相等,但是肯定有一个标准的方法来做到这一点?

Objective-C中有强types的集合吗?

我是Mac / iPhone编程和Objective-C的新手。 在C#和Java中,我们有“generics”,集合类的成员只能是声明的types。 例如,在C# Dictionary<int, MyCustomObject> 只能包含键types为MyCustomObject的整数和值。 Objective-C中是否存在类似的机制?

如何避免APIdevise中“参数太多”的问题?

我有这个API函数: public ResultEnum DoSomeAction(string a, string b, DateTime c, OtherEnum d, string e, string f, out Guid code) 我不喜欢它。 因为参数顺序变得不必要的重要。 添加新字段变得更加困难。 很难看到传递的是什么。 将方法重构成更小的部分比较困难,因为它会在子函数中传递所有参数。 代码很难阅读。 我想出了一个最明显的想法:有一个对象封装数据并传递,而不是逐个传递每个参数。 这是我想出来的: public class DoSomeActionParameters { public string A; public string B; public DateTime C; public OtherEnum D; public string E; public string F; } 这减less了我的API声明: public ResultEnum DoSomeAction(DoSomeActionParameters parameters, out […]

arrays与链表

为什么有人想要在数组上使用链表? 编码一个链表无疑比使用一个数组有更多的工作,人们可能想知道什么可以certificate额外的努力。 我认为插入新元素在链表中是微不足道的,但这是数组中的一件大事。 使用链表来存储一组数据与将其存储在数组中还有其他的好处吗? 这个问题不是这个问题的重复,因为另外一个问题是关于一个特定的Java类,而这个问题是关于一般的数据结构。