LeetCode-221-Maximal Square
题目描述:

思路分析:
标准动态规划题,动态规划第一步:定义状态;
状态:dp[i][j]
表示以位置i,j
为右下角,可以的最大正方形的边长。
初始化:对第一行和第一列赋初值,如果该位置的元素为1的话,则dp
的初值赋为1,否则为0;
状态转移方程:
dp[i][j] = Math.min(dp[i-1][j-1],Math.min(dp[i-1][j],dp[i][j-1]))
代码:
1 | class Solution { |
技巧说明:
在初始化dp
数组的时候,多初始化一行和一列,这样可以避免初始化
1 | class Solution { |
继续优化代码,使用一维的数组去替换二维的数组,使用pre变量代替左上角的值dp[i-1][j-1]
。
因为更新当前行的时候,只用到前一行的信息,之前的行就没有再用到了,所以我们可以用一维数组,不需要二维矩阵,也就是说只

1 | class Solution { |
AC记录:
