zoukankan      html  css  js  c++  java
  • 算法72----最大正方形

    一、题目:

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

    示例:

    输入: 
    
    1 0 1 0 0
    1 0 1 1 1
    1 1 1 1 1
    1 0 0 1 0
    
    输出: 4

    二、思路

    三、代码:

    public class Solution {
        public int maximalSquare(char[][] matrix) {
            if(matrix.length == 0) return 0;
            int m = matrix.length, n = matrix[0].length;
            int max = 0;
            int[][] dp = new int[m][n];
            // 第一列赋值
            for(int i = 0; i < m; i++){
                dp[i][0] = matrix[i][0] - '0';
                max = Math.max(max, dp[i][0]);
            }
            // 第一行赋值
            for(int i = 0; i < n; i++){
                dp[0][i] = matrix[0][i] - '0';
                max = Math.max(max, dp[0][i]);
            }
            // 递推
            for(int i = 1; i < m; i++){
                for(int j = 1; j < n; j++){
                    dp[i][j] = matrix[i][j] == '1' ? Math.min(dp[i-1][j-1], Math.min(dp[i-1][j], dp[i][j-1])) + 1 : 0;
                    max = Math.max(max, dp[i][j]);
                }
            }
            return max * max;
        }
    }

    https://segmentfault.com/a/1190000003709497

  • 相关阅读:
    vb移动窗体的代码
    vb得到一个进程的启动参数?
    UTF8方式读写文件的模块
    JavaScript中Window.event详解
    vb设置窗体不可移动
    一拖二
    实习第一天
    사랑해
    决定考研
    Eclipse快捷键
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/10275752.html
Copyright © 2011-2022 走看看