Leetcode--221--Maximal Square
2016-01-08 21:06
393 查看
方法一:
对于方阵中的每个点来说,先看纵向最多有多少个连续的1(例如:k个),然后从k到2开始枚举正方形的边长(设为j),每次判断能否形成一个正方形的时候去判断这j行是否每行都有连续j个1 。
具体做法:
1. 对于每个点统计以这个点为起点,横向有多少个1,纵向有多少个1,并得到分别得到两个矩阵。
2. 按照之前的普通思路进行判断
View Code
对于方阵中的每个点来说,先看纵向最多有多少个连续的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
相关文章推荐
- 分类算法之朴素贝叶斯分类(Naive Bayesian classification)
- iOS容易造成循环引用的三种场景,就在你我身边!
- Android Studio设置Android SDK、Android JDK、Android NDK路径
- hdoj2036改革春风吹满地
- poj1502
- -Dmaven.multiModuleProjectDirectory system propery is not set
- Linux FTP Shell
- 1.8作业
- JS常用对象
- NYOJ 32 组合数
- 2015年
- 【php】exit()与die()函数详解
- NSMutableDictionary的基本使用
- Spring4.2.0 集成 Spring-scurity4.0.3框架
- 多台电脑间共享鼠标键盘synergy
- MAC键盘快捷键
- Java中的SSH框架之hibernate
- IOS开发UI篇--使用CAShapeLayer实现复杂的View的遮罩效果
- java jar文件为什么双击没反应
- 欢迎来到我的CSDN