我正在编写一个算法,在其中寻找成对的值,这些值加在一起时会产生我正在寻找的另一个值。
我发现使用Map
将使我的算法速度从 O(n²) 开始。后来我意识到我并没有真正使用我的Map
so a List
就足够了。
我在谷歌上进行了强力搜索,但在我的问题标题中没有找到有关这些方法渐近运行时间的任何信息。
您能指出我应该在哪里寻找此类信息吗?
后来我意识到我并没有真正使用我的Map
so a List
就足够了。
Map
不仅仅是键值对的列表,它是从键到值的唯一映射。所以当你从Map
to List
,您允许在以前不允许的地方重复。另一方面,一个Set
正是一个Map
没有价值观。所以考虑使用HashSet
.
至于搜索复杂度:
list.contains
是 O(n),hashSet.contains
是 O(1),并且treeSet.contains
是 O(log n)。
有关现在的一般信息HashMap
有效,谷歌搜索“哈希表”。为了TreeMap
、谷歌搜索“二叉树”或类似内容。维基百科有关于这些主题的很好的条目。
但要小心,避免上课Hashtable
。这是现代图书馆中的考古文物。对于您的情况HashSet
也许是最好的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)