【发布时间】:2014-05-02 14:24:06
【问题描述】:
我有一张地图TreeMap<Integer, Set<Integer>> adjacencyLists 和一个整数集TreeSet<Integer> specialNodes。
地图表示图的邻接列表。
我想从adjacencyLists 中挑选密钥,并在specialNodes 中查找它们是否有共同的相邻。
有没有办法有效地做到这一点?
示例:
adjacencyLists如下:
[1, [2 3 4 5]]
[2, [1 5]]
[3, [1 4 5]]
[4, [1 3]]
[5, [1 2 3]]
和specalNodes如下:
[1 3 4 5]
在本例中,4 和 5 出现在 adjacencyLists 的第一个和第三个条目的值中。
因此,写一个函数findCommon(1,3) 应该给我[4 5]
同样,findCommon(1,5) 应该返回 null,因为 '2' 是唯一常见的元素,并且不在 specialNodes 中。
【问题讨论】:
-
findCommon(1,3)给出[4 5]。那么specialNodes有什么用呢? -
它4和5都在
specialNodes。 -
他们是
TreeSets。我假设它们是排序的。不过,我可以对它们进行排序。这需要O(nlogn)时间。没问题。 -
没有。 TreeMap 集的值。他们排序了吗?
-
是的,我将元素添加为
put(adjacencyLists.size(), set);
标签: java map set graph-theory