我想保留一个在递归循环中已经遇到的事情的列表,这样就可以避免重复计算相同的事情。最有效的数据结构是什么?
看看复杂性分析,Hashtables似乎是最有效的查找。然而,当我感兴趣的是查找指定的密钥是否存在时,持有密钥值对的数据结构是低效的。
我认为也许一套是个好主意,但它的复杂性似乎并没有说明这一点。
最佳答案
集合可能是正确的抽象数据类型,因为它编码的唯一信息实际上是项目是否在其中。
但是,使用集合并没有指定特定的实现。在大多数上下文中,您应该能够找到使用散列实现的集合类型或某种树结构您选择哪一个取决于您插入的数据是否可以有效地散列或排序。
在某些库中,您将发现使用库的映射类型实现的集合类型,但忽略该值。例如在rust中,标准库的HashSet
类型是使用HashMap
类型实现的。