題目:
最大正方形:在一個由 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
