动态规划解法 详解见视频

最大正方形

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

视频连接:https://www.bilibili.com/video/BV1po4y1d7C9/

class Solution:
    def solve(self , matrix ):
        if not matrix: return 0
        rows = len(matrix)
        cols = len(matrix[0])
        dp = [[0 for _ in range(cols)] for _ in range(rows)]
        res = 0

        # 上边界或者左边界 最大只可能有 1的矩阵 
        for i in range(rows):
            if matrix[i][0] == '1': 
                dp[i][0] = 1
        for j in range(cols): 
            if matrix[0][j] == '1':
                dp[0][j] = 1

        for row in range(1, rows):
            for col in range(1, cols):
                if matrix[row][col] == '1':
                    # 从左、左上、上 三个方向 判断是否 能够组成 最大矩阵
                    dp[row][col] = min(dp[row-1][col], dp[row][col-1], dp[row-1][col-1]) + 1
                    # 更新 最大值
                    res = max(res, dp[row][col])
        return res*res
全部评论

相关推荐

双非一本失业第二年:《机器视觉垃圾分类》
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务