题目:
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
示例:
输入:
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0
输出: 4
题目的理解:
找到1,则进行判断正方形的一圈是否都是1. 然后记录面积。
python实现
class Solution:
def maximalSquare(self, matrix: List[List[str]]) -> int:
row = len(matrix)
if 0 >= row:
return 0
column = len(matrix[0])
result = set()
def findSquare(i: int, j: int, times: int, area: int) -> int:
columnTemp = j + times
if columnTemp >= column:
return area
rowTemp = i + times
if rowTemp >= row:
return area
for index in range(times + 1):
if '1' != matrix[i + index][columnTemp]:
return area
if '1' != matrix[rowTemp][j + index]:
return area
return findSquare(i, j, times + 1, (times + 1) ** 2)
for i in range(row):
for j in range(column):
if '1' == matrix[i][j]:
area = findSquare(i, j, 1, 1)
result.add(area)
return max(result) if len(result) > 0 else 0
想看最优解法移步此处
提交
暴力解法// END 算法整的算一个重要又不重要的技能,感觉有则无敌,无则苟且
网友评论