您的位置:首页 > 其它

Leetcode--221--Maximal Square

2016-01-08 21:06 393 查看
方法一:

对于方阵中的每个点来说,先看纵向最多有多少个连续的1(例如:k个),然后从k到2开始枚举正方形的边长(设为j),每次判断能否形成一个正方形的时候去判断这j行是否每行都有连续j个1 。

具体做法:

1. 对于每个点统计以这个点为起点,横向有多少个1,纵向有多少个1,并得到分别得到两个矩阵。

2. 按照之前的普通思路进行判断

class Solution(object):
def maximalSquare(self, matrix):
"""
:type matrix: List[List[str]]
:rtype: int
"""
ans = 0
res = []
for i in range(0,len(matrix)):
#print "i:",i
res.append([])
for j in range(0,len(matrix[0])):
#print "j:",j
res[i].append(0)
for i in range(0,len(matrix)):
for j in range(0,len(matrix[0])):
if i ==0 or j==0:
if matrix[i][j]=='0':
res[i][j] = 0
else:
res[i][j] = 1
elif matrix[i][j]=='0':
res[i][j] = 0
else:
res[i][j] = 1+min(res[i][j-1],min(res[i-1][j-1],res[i-1][j]))
ans = max(ans,res[i][j])
return ans**2


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: