-2

我在java(grails)中有一个列表列表,我正在尝试查找列表中每个列表中存在的元素。有没有人有一个快速的方法来做到这一点?谢谢!

4

2 回答 2

1

如果列表有独特的元素,你可以这样做(但独特的元素我知道一个元素可以放在几个列表中,但每个列表只能放置一次。否则,如果第一个列表包含 [1,2,2,3] 而其他包含[x,2,y] 作为输出,您将看到 [2,2] 而不是 [2] )

List tmpList=new ArrayList<>(lists.get(0));
for(int i=1; i<lists.size(); i++)
    tmpList.retainAll(new ArrayList<>(lists.get(i)));
System.out.println(tmpList);
于 2012-07-05T18:37:22.870 回答
0

取 1 个链接列表,复制它,然后检查所有其他链接列表。

如果列表没有元素,则从新创建的列表中删除该元素。

您可以将新创建​​的列表实现为映射或哈希表,以降低时间复杂度。

无论哪种方式,除非您的列表已排序或其他方式,否则您的算法不能比 O(n) 快,其中 n 是所有列表中所有元素的总和

我概述的算法是 O(nm) 其中 m 是您最小列表的计数。

于 2012-07-05T18:32:15.300 回答