发现算法有漏洞
来源:7-4 最大矩阵-代码实操(1)

ChenBugBug
2019-07-07
虽然代码在letcode上能提交通过,为了展示漏洞我自建了一个测试用例如下:
[[“1”,“1”,“0”,“0”,“0”,“0”]
,[“1”,“1”,“0”,“1”,“0”,“0”]
,[“1”,“1”,“0”,“1”,“1”,“1”]
,[“1”,“1”,“0”,“1”,“1”,“1”]]
发现测试不通过;
我估计是循环体内的操作有点问题:
循环体后,只会产生一个循环体内width最大的交集:
for (let i = 0, il = top.length; i < il; i++) {
tt = top[i]
for (let j = 0, jl = next.length; j < jl; j++) {
nn = next[j]
width = Math.min(tt[1], nn[1]) - Math.max(tt[0], nn[0])
if (width >= maxWidth) {
maxWidth = width
start = Math.max(tt[0], nn[0])
end = Math.min(tt[1], nn[1])
}
}
}
例如 :
top = [ [ 0, 2 ], [ 4, 5 ] ],
next = [ [ 0, 2 ], [ 4, 5 ] ]
经过循环后生成新的 一行是 [[0, 2]] ,
与预期的交集[[0, 2],[4, 5]]不符
写回答
1回答
-
快乐动起来呀
2019-07-07
欢迎贡献issue到git.imooc.com,然后我会把答案标记到issue里哈,感谢
00
相似问题