题解 | #奶牛的活动面积#

奶牛的活动面积

https://www.nowcoder.com/practice/666cb0dd46a2439fb7c44d24a9918bf7

题目考察的知识点是:

动态规划

题目解答方法的文字分析:

我们考虑如果当前点不是左上两条边的点的话, 那么如果满足当前点上面连续的C的个数和左边的连续的C的个数均大于f[i-1][j-1], 那么f[i][j]就可以在f[i-1][j-1]的基础上+1

本题解析所用的编程语言:

java语言。

完整且正确的编程代码:

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param land char字符型二维数组
     * @return int整型
     */
    public int maximalSquare (char[][] land) {
        // write code here
        int maxSide = 0;
        if (land.length == 0 || land[0].length == 0) {
            return maxSide;
        }
        int rows = land.length, cols = land[0].length;
        int[][] dp = new int[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                if (land[i][j] == 'C') {
                    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;
    }
}

#题解#
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务