💡
原文英文,约600词,阅读约需3分钟。
📝
内容提要
给定一个由0和1组成的矩阵,使用动态规划计算所有全为1的正方形子矩阵的数量。定义dp[i][j]为以(i,j)为右下角的最大正方形边长,遍历矩阵并累加dp值,时间复杂度为O(m*n)。
🎯
关键要点
- 给定一个由0和1组成的矩阵,计算全为1的正方形子矩阵的数量。
- 使用动态规划方法,定义dp[i][j]为以(i,j)为右下角的最大正方形边长。
- 遍历矩阵并累加dp值,时间复杂度为O(m*n)。
- 示例1中,矩阵[[0,1,1,1], [1,1,1,1], [0,1,1,1]]的输出为15。
- 示例2中,矩阵[[1,0,1], [1,1,0], [1,1,0]]的输出为7。
- 如果matrix[i][j]为1,dp[i][j]的值取决于(i-1,j)、(i,j-1)和(i-1,j-1)的最小值加1。
- 如果matrix[i][j]为0,则dp[i][j]为0。
- 最终通过累加所有dp[i][j]的值得到所有正方形的总数。
➡️