我想保留我在递归循环中已经遇到的事情的列表,这样我可以避免一遍又一遍地重新计算相同的事情。最有效的数据结构是什么?
通过复杂度分析,哈希表似乎是最有效的查找方法。但是,当我只想查找指定的键是否存在时,保存键值对的数据结构效率很低。
我认为也许一个集合是一个好主意,但是它的复杂性似乎并不表明这一点。
集合可能是正确的抽象数据类型,因为实际上它唯一编码的信息是项目是否在内部。
尽管使用集合并没有指定特定的实现。在大多数情况下,您应该能够找到使用散列或某种类型的树结构实现的集合类型。您选择哪一个取决于您插入的数据是否可以有效地进行哈希处理或排序。
[在某些库中,您会找到使用库的映射类型实现的集合类型,但是该值将被忽略。例如,在rust中,标准库的HashSet
类型是使用HashMap
类型实现的。