题目:
最大正方形:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
思路:
思路来源于官方,自己的思路把题做的太难了,也做不对,直接借助一个矩阵来存放最大的面积,设计程序需要一定的小技巧。
程序:
class Solution: def maximalSquare(self, matrix: List[List[str]]) -> int: if not matrix: return 0 rows = len(matrix) columns = len(matrix[0]) if rows == 0 or columns == 0: return 0 max_side = 0 auxiliary = [[0] * columns for _ in range(rows)] for index1 in range(rows): for index2 in range(columns): if matrix[index1][index2] == '1': if index1 == 0 or index2 == 0: auxiliary[index1][index2] = 1 else: auxiliary[index1][index2] = min(auxiliary[index1 - 1][index2 - 1], auxiliary[index1][index2 - 1], auxiliary[index1 - 1][index2]) + 1 max_side = max(max_side, auxiliary[index1][index2]) result = max_side ** 2 return result