如何在多个列表中找到共同的链接?

时间:2016-03-21 17:12:17

标签: list

我正在试图弄清楚如何比较n个列表以找到列表中的公共链接。例如,以下是列表:

A = [1,2,3],
B = [3,4,5,6],
C = [6,7,8],
D = [4,5,6],
      ..
      ..

该程序的输入将是A和C(寻找找到A& C之间公共链接的方法)

The expected output is 
C-->B-->A (A & C are linked through B)

挑战可能是找到更深层次的联系,例如

A = [1,2,3],
B = [3,4,5,6],
C = [6,7,8],
D = [8,9,10],
E = [10,11,12]      ..
      ..

该程序的输入将是A和E(寻找找到A& E之间公共链接的方法)

The expected output is 
E-->D-->C-->B-->A (A & E are linked through D,C,B)

我看过这个比较两个列表的解决方案,但它解决了一个非常不同的问题:How to find common elements in list of lists?

1 个答案:

答案 0 :(得分:0)

解决这个问题你需要:

  1. 从现有数组构建图表
  2. 将每个数组与每个其他数组进行比较,如果至少有一个元素是常用的,则创建权重为1的边,HashSet会帮助你

    1. 找到最短路径
    2. 只要你有图表,就可以使用任何路径查找算法,我建议你从最简单的Floyd–Warshall开始