题解 | #最大正方形,dp#

最大正方形

https://www.nowcoder.com/practice/0058c4092cec44c2975e38223f10470e

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 最大正方形
     * @param matrix char字符型二维数组 
     * @return int整型
     [1,0,1,0,0],
     [1,0,1,1,1],
     [1,1,1,1,1],
     [1,0,0,1,0]
     */
    public int solve (char[][] matrix) {
        if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return 0 ;
        //f[i][j]表示以matrix[i][j]为右下角的正方形的 边长
        int[][] f = new int[matrix.length][matrix[0].length] ;
        int maxLen = 0 ;
        for(int i = 0 ; i < f.length ; i ++) {
            for(int j = 0 ; j < f[0].length ; j ++) {
                if(matrix[i][j] == '0') continue ;
                if(i == 0 || j == 0) {
                    f[i][j] = 1;
                } else {
                    //转移方程,从 (上,左,上左) 这三个位置转移过来 
                    f[i][j] = Math.min(Math.min(f[i-1][j] , f[i][j - 1]) , f[i-1][j-1]) + 1 ;
                }
                if(f[i][j] > maxLen) maxLen = f[i][j] ;
            }
        }
        return maxLen * maxLen ;
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

07-10 14:08
已编辑
江西农业大学 Java
念旧select:做完把项目放到自己硬盘里给他看,看完拷走
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务