LeetCodeDiary

A Diary for solving LeetCode problems

View on GitHub
'''
Description: 
Autor: Au3C2
Date: 2021-01-08 16:30:29
LastEditors: Au3C2
LastEditTime: 2021-01-08 16:31:12
'''
class Solution:
    def maximalSquare(self, matrix: List[List[str]]) -> int:
        m, n = len(matrix), len(matrix[0])
        f = [[0] * n for _ in range(m)]
        ans = 0
        for i in range(m):
            for j in range(n):
                if i == 0 or j == 0:
                    f[i][j] = int(matrix[i][j])
                elif matrix[i][j] == '0':
                    f[i][j] = 0
                else:
                    f[i][j] = min(f[i][j - 1], f[i - 1][j], f[i - 1][j - 1]) + 1
                ans = max(ans,f[i][j])
        return ans**2

# 动态规划,中等。与1227解法类似
# https://leetcode-cn.com/problems/maximal-square/