力扣221最大正方形
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
- 解法:动态规划。
- dp[][]的含义为,以该点为右下角的最大正方形的边长。dp[i][j]的值为 左边点的dp,上边点的dp和左上点dp最小值加1.(我也确实没想到,看题解才明白。。。不过我觉得动态规划就是要多刷题才会有感觉,加油。没刷过题的话,一般人都想不到。只要想到dp的含义以及dp间转化关系,问题就解决了。)
package Leetcode; public class maximalSquare { public int maximalSquare(char[][] matrix) { if(matrix.length==0){ return 0; } int res=0; int[][] dp = new int[matrix.length+1][matrix[0].length+1]; for (int i = 1; i <= matrix.length; i++) { for (int j = 1; j <= matrix[0].length; j++) { if(matrix[i-1][j-1]=='1'){ dp[i][j] = Math.min(Math.min(dp[i][j-1],dp[i-1][j]),dp[i-1][j-1])+1; } res = Math.max(res,dp[i][j]); } } return res*res; } }

浙公网安备 33010602011771号