其他分享
首页 > 其他分享> > 【Leetcode刷题篇】Leetcode221 最大正方形

【Leetcode刷题篇】Leetcode221 最大正方形

作者:互联网

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。

在这里插入图片描述
在这里插入图片描述

解题思路:动态规划

class Solution {
    public int maximalSquare(char[][] matrix) {
        // 找到最大边即可
	    	int maxSide = 0;
	    	// 动态规划
	    	int rows = matrix.length;
	    	int cols = matrix[0].length;
	    	int[][] dp = new int[rows][cols];
	    	for(int i=0;i<rows;i++) {
	    		for(int j=0;j<cols;j++) {
	    			// 判断
	    			if(matrix[i][j]=='1') {
	    				if(i==0||j==0) {
	    					dp[i][j] = 1;
	    				}else {
	    					dp[i][j] = Math.min(Math.min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1]) + 1;
	    				}
	    				maxSide = Math.max(maxSide, dp[i][j]);
	    			}
	    		}
	    	}
	    	
	    	
	    	return maxSide * maxSide;
    }
}

标签:Leetcode221,int,cols,maxSide,Math,matrix,Leetcode,dp,刷题
来源: https://blog.csdn.net/Mind_programmonkey/article/details/110732856