Algorithm 在嵌套数组中查找重复列

Algorithm 在嵌套数组中查找重复列,algorithm,Algorithm,输出:{0,2,4},{1,3},{5,6}(可以使用任何数据结构) 假设有一个像上面这样的嵌套数组。如果我们想找到包含相同顺序的精确数字的列索引(例如,列0、2、4和(1,5,2,1,4,2)以及列1、3和(2,4,4,2,4,4)以及列5、6和(5,1,1,1,1,2),我们如何有效地进行此操作?是否需要动态编程 提前感谢。您可以在列中进行迭代,保留到目前为止看到的列的哈希映射。下面是python中的一个实现: 0 1 2 3 4 5 6 0{1,2,1,2,1,5,5} 1{5,4,5

输出:{0,2,4},{1,3},{5,6}(可以使用任何数据结构)

假设有一个像上面这样的嵌套数组。如果我们想找到包含相同顺序的精确数字的列索引(例如,列0、2、4和(1,5,2,1,4,2)以及列1、3和(2,4,4,2,4,4)以及列5、6和(5,1,1,1,1,2),我们如何有效地进行此操作?是否需要动态编程


提前感谢。

您可以在列中进行迭代,保留到目前为止看到的列的哈希映射。下面是python中的一个实现:

  0 1 2 3 4 5 6
0{1,2,1,2,1,5,5}
1{5,4,5,4,5,1,1}
2{2,4,2,4,2,1,1}
3{1,2,1,2,1,1,1}
4{4,4,4,4,4,1,1}
5{2,4,2,4,2,2,2}
这在线性时间内解决了这个问题。我希望这对你来说已经足够好了

x = [[1, 2, 1, 2, 1, 5, 5], 
     [5, 4, 5, 4, 5, 1, 1], 
     [2, 4, 2, 4, 2, 1, 1], 
     [1, 2, 1, 2, 1, 1, 1], 
     [4, 4, 4, 4, 4, 1, 1], 
     [2, 4, 2, 4, 2, 2, 2]]
seen_before = {}
for v, col in enumerate(zip(*x)):
    if tuple(col) not in seen_before:
        seen_before[tuple(col)] = [v]
    else:
        seen_before[tuple(col)].append(v)