2020/07/05 未参赛,AC 3/4
第三题 全一子矩阵
思路参考最大矩形。
设计一个dp[i][j]
表示以i,j
为右下角的矩阵的最大值,我们需要枚举宽度和高度,但是我们可以通过预先设计一个矩阵,存储每个位置上方最大的连续矩阵1个数。
class Solution:
def numSubmat(self, mat: List[List[int]]) -> int:
## 考虑时间复杂度降低为O(nnm)
## 定义dp[i][j]表示i,j这个点上方的连续1的个数
n = len(mat)
m = len(mat[0])
dp = [[0]*m for _ in range(n)]
for i in range(m):
dp[0][i] = mat[0][i]
for i in range(1,n):
for j in range(m):
if mat[i][j]:
dp[i]