在2D矩阵中找到最大的棋盘表面

时间:2019-11-04 11:02:46

标签: algorithm

我在解决运动时遇到了一些困难,希望我能从您那里得到一些帮助。 给定一个具有N行和M列的2D数组,并且该数组仅包含值为0和1的元素。 找到与棋盘相似的最大表面(其中0是白色方块,1是黑色方块),并打印该表面的大小(方块数)。

约束: 2 <= N <= 1000 2 <= M <= 1000

示例: N = 4,M = 5

0 1 1 0 1
1 0 1 0 1
0 0 1 1 0
1 1 0 1 1

输出:平方数= 5(从第1列到第5列第2行)

示例: N = 3,M = 4

0 0 1 0
1 1 0 0
1 0 1 0

输出:平方数= 6(从第1行到第3行,从第2列到第3列)

1 个答案:

答案 0 :(得分:1)

  1. 以棋盘格模式翻转每隔一个单元格
  2. 找到仅包含0或仅1s的最大矩形。

有关第二部分的帮助,请参见Find largest rectangle containing only zeros in an N×N binary matrix

第二个例子:

0 0 1 0
1 1 0 0
1 0 1 0

每翻转第二个单元格就会产生:

0 1 1 1
0 1 1 0
1 1 1 1

您可以看到要查找的1s矩形。