在这个问题中,给定一个二维数组表示黑白棋盘,黑棋用1表示,白棋用0表示。目标是找到一个最大的正方形,其边界由黑棋(1)组成,并返回该正方形的右下角坐标及其宽度。如果有多个满足条件的正方形,则返回右下角行号最小的,若行号相同则返回列号最小的。输入包括棋盘的行数和列数,以及棋盘的具体内容,输出为一个列表,包含满足条件的最大正方形的信息。
原题来自于LeetCode 1139. 最大的以 1 为边界的正方形
我们只需要在此基础上找到这个正方形的右下角即可。
现在有一个二维数组来模拟一个黑白棋盘,将黑白棋子置于方格之中,棋盘中每个位置都放入黑棋或白棋,分别对应数组每个元素取值只能为 1 或 0 (黑棋为 1 , 白棋为 0),现在需要找一个正方形边界,其每条边上的棋子都是黑棋(对应数组中元素的值为 1 )的,且该正方形面积最大。
输入第一行为棋盘的行数(二维数组的行数)
输入第二行为棋盘的列数(二维数组的列数)
紧接着为模拟棋盘的二维数组 arr
1<arr.length≤200
1<arr[0].length≤200
返回满足条件的面积最大正方形边界信息。返回信息[r,c,w],其中 r , c 分别代表方阵右下角的行号和列号,w 代表正方形的宽度。如果存在多个满足条件的正方形,则返回 r 最小的,若 r 相同,返回 c 最小的正方形。
输入
4
5
1 0 0 0 1
1 1 1 1 1
1 0 1 1 0
1 1 1 1 1
输出
[3,2,3]
说明:满足条件且面积最大的正方形边界,其右下角的顶点为 [3,2],即行号为 3 ,列好为 2 ,其宽度为 3 ,因此返回信息为 [3,2,3]。
输入
3
3
1 0 0
0 1 0
0 0 1
输出
[0,0,1]
**说明:**满足条件且面积最大的正方形边界有三个。即为 [0,0,1]、[1,1,1]、[2,2,1],根据要求,如果满足条件有多个,则返回 r 最小,即为[0,0,1]