发现算法有漏洞

来源: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里哈,感谢

0
0

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程