【发布时间】:2017-09-03 15:30:49
【问题描述】:
给定一个由 1 和 0 组成的 10 x N 矩阵,例如:
1 1 1 1 1 1 1 1
1 1 0 1 1 0 0 1
0 0 0 1 1 0 0 1
0 0 0 1 1 0 0 0
1 0 0 0 0 1 0 0
1 0 1 1 1 1 1 1
1 0 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
注释:
列中的零总是在两次连续的 1 之间。例如,不允许使用 列,例如
1 1 1 0 1 0 1 1 1 1-
每个列中必须至少有一个零的间隙,即列如:
1 1 1 1 1 1 1 1 1 1是不允许的
我想从左到右找到最长的连续零条纹。在这种情况下,即为 4,它对应于从上数第 5 行的第二列开始的路径,
第二长的是 3,有 3 个例子。
我对此有点困惑,尤其是对于非常大的 N (~10M)。我正在寻找有关要使用的正确方法/数据结构或类似问题以及那里使用的算法的建议。另一种可能的问题建模方法是使用两个列表来表示问题:
L1 = [2, 2, 1, 4, 4, 1, 1, 3]
L2 = [6, 3, 5, 5, 5, 5, 5, 5]
但仍不太确定如何提出有效的解决方案
【问题讨论】:
-
N 有多大?
-
由于数组中最多有 10 个零且只有
1和0,因此您可以创建所有行的字符串并检查所有行是否为'0000000000' in row。如果不是,则继续使用 9 个零,依此类推。可能不适用于 10M 行。
标签: arrays performance list python-3.x matrix