Questions tagged «data-structures»

数据结构是以一种组织数据的方式,该方式允许有效地查询和/或更新该数据的特定属性。

14
从Java中的HashMap获取密钥
我在Java中有一个Hashmap,如下所示: private Map<String, Integer> team1 = new HashMap<String, Integer>(); 然后我像这样填充它: team1.put("United", 5); 如何获得钥匙?类似于:team1.getKey()返回“ United”。

18
测试列表是否在Clojure中包含特定值
测试列表是否在Clojure中包含给定值的最佳方法是什么? 特别是,contains?目前的行为使我感到困惑: (contains? '(100 101 102) 101) => false 很明显,我可以编写一个简单的函数来遍历列表并测试是否相等,但是一定要有一种标准的方法吗?

13
如何避免API设计中的“参数过多”问题?
我有这个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; } 这使我的API声明减少为: public ResultEnum DoSomeAction(DoSomeActionParameters parameters, out …

14
什么是“冻结命令”?
冻结集是冻结集。 冻结列表可能是一个元组。 冻结的字典是什么?一个不变的,可哈希的字典。 我猜可能是collections.namedtuple,但是更像是冰冻的字典(半冻结​​的字典)。是不是 A“frozendict”应该是一个冰冻的字典,它应该有keys,values,get,等,并支持in,for等等。 更新: *它是:https : //www.python.org/dev/peps/pep-0603

7
为什么要在堆栈上使用Deque?
Stack我的用例需要一个数据结构。我应该能够将项目推送到数据结构中,而我只想从堆栈中检索最后一个项目。该堆栈的JavaDoc说: Deque接口及其实现提供了一组更完整和一致的LIFO堆栈操作,应优先使用此类。例如: Deque<Integer> stack = new ArrayDeque<>(); 我绝对不希望这里出现同步行为,因为我将在方法本地使用此数据结构。除了这个,我为什么还要Deque在Stack这里呢? PS:Deque的Javadoc说: 双端队列也可以用作LIFO(后进先出)堆栈。此接口应优先于旧版Stack类使用。

30
如何创建最紧凑的映射n→isprime(n)直到极限N?
自然地,因为bool isprime(number)会有可以查询的数据结构。 我定义了最佳算法,该算法将生成在((1,N])范围内具有最低内存消耗的数据结构,其中N是常数。这 只是我要查找的示例:我可以表示每个奇数以一位为例,例如对于给定的数字范围(1,10],从3开始:1110 下面的字典可以压缩更多,对吧?我可以通过一些工作消除5的倍数,但是以1、3、7或9结尾的数字必须存在于位数组中。 我该如何解决这个问题?

5
set()如何实现?
我见过有人说setpython 中的对象具有O(1)成员资格检查。如何在内部实现它们以允许这样做?它使用哪种数据结构?该实现还有什么其他含义? 这里的每个答案都非常有启发性,但是我只能接受一个答案,因此,我将选择与原始问题最接近的答案。谢谢你的信息!

4
有人实际上有效地实施了斐波那契堆吗?
你们中有没有人实施过斐波那契堆?几年前,我这样做了,但是比使用基于数组的BinHeaps要慢几个数量级。 那时,我认为这是一门宝贵的课程,说明研究并不总是像它声称的那样好。但是,许多研究论文声称其算法基于使用斐波那契堆的运行时间。 您是否曾经设法产生有效的实施方案?还是您使用的数据集如此之大,以至于斐波那契堆更有效?如果是这样,一些细节将不胜感激。

11
为什么要以初始容量启动ArrayList?
通常的构造函数ArrayList是: ArrayList<?> list = new ArrayList<>(); 但是,还有一个带有初始容量参数的重载构造函数: ArrayList<?> list = new ArrayList<>(20); ArrayList当我们可以随意添加初始容量时,为什么创建初始容量有用呢?



22
使用两个队列实现堆栈
之前有人问过类似的问题 有,但这里的问题是反向的话,使用两个队列,栈。问题... 鉴于两个队列与他们的标准操作(enqueue,dequeue,isempty,size),实现堆栈与它的标准操作(pop,push,isempty,size)。 应该有两个解决方案版本。 版 A:推入物品时,堆叠应该高效;和 版本B:弹出项目时,堆栈应高效。 我对算法比对任何特定语言的实现都更感兴趣。但是,我欢迎以我熟悉的语言表达的解决方案(爪哇,C#,蟒蛇,vb,javascript,的PHP)。

4
在IGrouping中获取“值”属性
我有一个像这样的数据结构 public DespatchGroup(DateTime despatchDate, List<Products> products); 我正在努力做... var list = new List<DespatchGroup>(); foreach (var group in dc.GetDespatchedProducts().GroupBy(i => i.DespatchDate)) { // group.Values is not correct... how do I write this? list.Add(new DespatchGroup(group.Key, group.Values); } 我显然不明白,IGrouping因为我看不到如何实际访问组中的数据记录!


12
二进制搜索树的定义中是否允许重复键?
我试图找到二叉搜索树的定义,并且在各处不断找到不同的定义。 有人说,对于任何给定的子树,左子键都小于或等于根。 有人说,对于任何给定的子树,正确的子键都大于或等于根。 我的大学数据结构旧书说“每个元素都有一个键,没有两个元素具有相同的键”。 bst是否有通用定义?特别是关于如何处理具有相同键的多个实例的树。 编辑:也许我不清楚,我看到的定义是 1)左<=根<右 2)左<根<=右 3)左<根<右,因此不存在重复的键。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.