这是一道较为另类的动态规划。
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: |
思路:
要组成一个正方形,就要找到最长的正方形边长。利用二维动态规划保存以每一个位置为正方形右下角的时候,能够找到的最大正方形边长。
考虑第(i, j)位置:
1 | dp[i-1][j-1] dp[i-1][j] |
状态转移公式
1 | if(matrix[i][j] == 1) dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) +1 |
这个题的坑在于,输入的是char而不是int,一定要注意。
1 | class Solution { |