给你一个大小为 m × n 的二维整数矩阵 mat,其中:
mat[r][c] == 1 表示位于行 r 和列 c 的单元格是可用的。mat[r][c] == 0 表示它不可用。你的任务是找到满足以下条件的 两个子矩阵 :
k 的正方形。mat[r][c] == 1 的单元格。返回单个正方形的最大可能面积。如果无法选择两个这样的正方形,则返回 0。
一个 子矩阵 (x1, y1, x2, y2) 包括所有满足 x1 <= x <= x2 且 y1 <= y <= y2 的单元格 mat[x][y] 。
示例 1:

输入: mat = [[1,1,1,0],[1,1,1,1],[0,0,1,1]]
输出: 4
解释:
最大且相等的无重叠正方形的边长为 k = 2,面积为 4。
(0, 0) 开始,覆盖单元格 (0, 0)、(0, 1)、(1, 0) 和 (1, 1)。(1, 2) 开始,覆盖单元格 (1, 2)、(1, 3)、(2, 2) 和 (2, 3)。因此,答案是 4。
示例 2:

输入: mat = [[0,1],[1,0]]
输出: 1
解释:
最大且相等的无重叠正方形的边长为 k = 1,面积为 1。
(0, 1) 开始,覆盖单元格 (0, 1)。(1, 0) 开始,覆盖单元格 (1, 0)。因此,答案是 1。
示例 3:

输入: mat = [[0,0],[0,1]]
输出: 0
解释:
只有一个可用的单元格,因此无法选择两个无重叠的正方形。因此,答案是 0。
提示:
mat.length == mmat[i].length == n1 <= m, n <= 500mat[i][j] 是 0 或 1。