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),我们如何有效地进行此操作?是否需要动态编程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
提前感谢。您可以在列中进行迭代,保留到目前为止看到的列的哈希映射。下面是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)