我有两个列表,每个列表有两个不同类型的对象,List list1和List list2。 list1中i
位置的对象与list2中位置i
的对象相关。
我必须回答类型的查询,给定对象A返回对象B在list2中的相同位置,反之,给定对象B返回对象A在list1中的相同位置。
简单的解决方案是对每个查询进行O(n)搜索。我正在寻找可能的解决方案来改进它。到目前为止,我所拥有的是两个词典,一个Dictionary<A, B> dicAtoB and Dictionary<B, A> dicBtoA
,我在其中插入了列表中的所有元素。
我要求一些其他的解决方案,因为在我的元素插入两次,我必须使用这两个额外的词典和...我不知道还有什么,但我只是不喜欢我的。
答案 0 :(得分:0)
两个建议:
A
的实例,而是通过调用i
提供索引B
(如果可能)并在O(1)
中获取bList[i]
的实例A
和B
以包含对来自其他类的相关对象的引用。它会使您的插入和删除操作更复杂,但搜索操作将为O(1)
,这是您进行大量搜索操作时的合理权衡。