题目描述
Given a 2D binary matrix filled with 0’s and 1’s, find the largest square containing only 1’s and return its area.
Example:
1 | Input: |
这题最快的方法还是使用动态规划。当matrix[i][j]为0时,dp[i][j]为0,当matrix[i][j]为1时,状态转移方程为:
dp[i][j] = min(dp[i-1][j-1], dp[i][j-1], dp[i-1][j]) + 1
dp[i][j]表示从左上角到matrix[i][j]的最大的正方形的边长。在每一个matrix为1的点,需要看它左上方,上方和左边的dp值,取最小的+1,才是当前的dp。因为最小的边长才是制约dp[i][j]大小的因素。
代码实现
1 | class Solution: |