给定n个包含整数的链表,找到它们之间的公共元素并返回列表



在最近的一次采访中,有人问我这个问题。我没能在规定的时间内想出一个令人满意的答案。

给定N个包含整数的单链列表,找到公共元素或它们之间的交点,并返回仅包含公共元素的列表。

示例:

输入:

list1=[1,3,4,5,10,3]

list2=[1,2,4,8,7,2]

list3=[9,11,1,4]

输出:

列表=[1,4]

注意:请注意,不应考虑同一列表中的重复元素。

如果列表实现Collections框架的公共List接口,则可以使用retainAll方法实现:

List<Integer> list1 = Arrays.asList(1, 3, 4, 5, 10, 3);
List<Integer> list2 = Arrays.asList(1, 2, 4, 8, 7, 2);
List<Integer> list3 = Arrays.asList(9, 11, 1, 4);

List<Integer> result = new ArrayList<>(list1);
Stream.of(list2, list3).forEach(result::retainAll);
System.out.println(result);

输出:

[1, 4]

步骤1:维护哈希映射<Integer,Integer>List_Frequency,用于存储该元素所在列表的频率。

步骤2:遍历每个列表。当再次遍历时,保持另一个HashMap<Integer,Integer>访问以了解您是否是第一次访问列表中的元素。因此,它只会使HashMap List_Frequency增加一次。

第3步:遍历HashMap List_Frequency以了解哪些元素被访问了N次。

相关内容

  • 没有找到相关文章

最新更新