Arrays 矩阵中零的最大路径搜索
给定1和0的10 x N矩阵,例如:Arrays 矩阵中零的最大路径搜索,arrays,performance,list,python-3.x,matrix,Arrays,Performance,List,Python 3.x,Matrix,给定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之间。例如,不允许使用列,例如101011 每个列中必须至少有一个0的间隙,即不允许出现列,例如:1 我想
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之间。例如,不允许使用列,例如
101011
- 每个列中必须至少有一个0的间隙,即不允许出现列,例如:
1
L1 = [2, 2, 1, 4, 4, 1, 1, 3]
L2 = [6, 3, 5, 5, 5, 5, 5, 5]
但是仍然不太确定如何使用、sum()
和max()
函数提出有效的解决方案:
import itertools
m = [
[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]
]
max_zero_len = max(sum(1 for z in g if z == 0)
for l in m for k,g in itertools.groupby(l))
print(max_zero_len)
输出:
4
在itertools中,对于m中的l,对于k,对于g。groupby(l)
-将为每个嵌套列表的1
和0
值的每个连续序列生成一个单独的组。(如[1,1],[0],[1,1],[0,0]…
)
sum(如果z==0,则g中的z为1)
-仅考虑0
的序列,并使用sum
函数计算其长度
max(…)
-获取零(0
)序列中的最大长度N有多大?因为数组中最多有10个零,并且只有1
和0
,所以可以为所有行生成字符串,并检查行中是否有'0000000000'
。如果不是,则继续使用9个零,依此类推。对于10万行来说可能不太好。给一些足够的理由支持下表决,如果你不是胆小鬼,我没有下表决,你能再解释一下代码中发生了什么吗?@dimebucker91,请看我的解释。我只是尝试创建一些N值更大的测试用例,你认为这对如此大的输入有什么作用?试着做一个测试。作为替代,我们可以考虑使用<代码> NoMPy < /Cult>模块。