题解 | #最大正方形#

最大正方形

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

class Solution {
public:
    /**
     * 最大正方形
     * @param matrix char字符型vector<vector<>> 
     * @return int整型
     */
    int solve(vector<vector<char> >& matrix) {
        // write code here
        int res = 0;
        int n = matrix.size();
        int m = matrix[0].size();
        if(n < 1 || m < 1)
            return res;
        vector<vector<int>> dp(n,vector<int>(m, 0));
        for(int i = 0; i < m; i++)
            if(matrix[0][i] == '1') {
                dp[0][i] = 1;
                res = 1;
            }
        for(int i = 0; i < n; i++)
            if(matrix[i][0] == '1') {
                dp[i][0] = 1;
                res = 1;
            }
        
        if(n < 2 && m < 2)
            return res;
        for(int i = 1; i < n; i++) {
            for(int j = 1; j < m; j++) {
                if(matrix[i][j] == '1') {
                    int a = min(dp[i][j - 1], dp[i - 1][j]);
                    dp[i][j] =min(a , dp[i - 1][j - 1]) + 1;
                    res = max(dp[i][j], res);
                }
            }
        }
        return res * res;
    }
};
全部评论

相关推荐

2025-12-22 16:31
已编辑
桂林电子科技大学 Python
很奥的前端仔:如果你接了offer 临时又说不去 hr确实要多做一些工作。 当然如果是接offer之前当我没说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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