LeetCode 221. 最大正方形(动态规划)

题目描述

在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
示例:
输入:
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0
输出: 4

思路

详见链接

代码

class Solution:
	def maximalSquare(self,matrix):
		if (not matrix):
			return 0
		m = len(matrix)
		n = len(matrix[0])
		dp = [[0]*(n+1) for _ in range(m+1)]
		res = 0
		for i in range(1,m+1):
			for j in range(1,n+1):
				if matrix[i-1][j-1] == 1:
					dp[i][j] = min(dp[i-1][j],dp[i-1][j-1],dp[i][j-1]) + 1
					res = max(dp[i][j],res)
		return res*res
test = Solution()
test.maximalSquare([[1,0,1,0,0],
                    [1,0,1,1,1],
                    [1,1,1,1,1],
                    [1,0,0,1,0]])

效果

在这里插入图片描述

发布了38 篇原创文章 · 获赞 194 · 访问量 4713

猜你喜欢

转载自blog.csdn.net/weixin_37763870/article/details/103881704