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

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

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

解题思路:动态规划

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;
    }
}
上一篇:实验10.1


下一篇:OpenCV-Core学习日志:Mat要点总结