Maximal Square || LeetCode
2015-06-05 21:45
405 查看
dp.
我这个空间复杂度有点高
#define MAX 1000 int rowLeft[MAX][MAX]; int colUp[MAX][MAX]; int dp[MAX][MAX]; void calRow(char **matrix,int matrixRowSize,int matrixColSize){ int i,j; for(i=0;i<matrixRowSize;++i){ for(j=0;j<matrixColSize;++j) { if(matrix[i][j]=='1') { if(j==0)rowLeft[i][j]=1; else rowLeft[i][j]=rowLeft[i][j-1]+1; } else rowLeft[i][j]=0; } } } void calCol(char **matrix,int matrixRowSize,int matrixColSize){ int i,j; for(i=0;i<matrixRowSize;++i) { for(j=0;j<matrixColSize;++j) { if(matrix[i][j]=='1'){ if(i==0)colUp[i][j]=1; else colUp[i][j]=colUp[i-1][j]+1; } else colUp[i][j]=0; } } } int min(int a,int b,int c){ int t; t=(a<b?a:b); t=(t<c?t:c); return t; } int maximalSquare(char** matrix, int matrixRowSize, int matrixColSize) { int i,j,maxSquare=0; calRow(matrix,matrixRowSize,matrixColSize); calCol(matrix,matrixRowSize,matrixColSize); for(i=0;i<matrixRowSize;++i) { for(j=0;j<matrixColSize;++j) { if(i==0||j==0) dp[i][j]=(matrix[i][j]=='1'?1:0); else dp[i][j]=min(dp[i-1][j-1]+1,rowLeft[i][j],colUp[i][j]); maxSquare=(maxSquare>dp[i][j]?maxSquare:dp[i][j]); } } return maxSquare*maxSquare; }
我这个空间复杂度有点高
相关文章推荐
- 海量数据处理技术(1): 散列技术
- 单元测试解决HttpContext的问题
- quick接入SDK
- icpc2015 D Cutting Cheese(二分+球缺体积)
- IDF实验室-特殊的日子
- QQ通信原理及QQ是怎么穿透内网进行通信的?
- [GUI] QT事件与X11的关系
- String to Integer (atoi)
- 单元测试解决HttpContext的问题
- 面试题22 栈的压入、弹出序列
- Activity dispatchTouchEvent事件分发--测试(一)
- [hdu4495]二分,字符串hash,DP
- 构造水题 Codeforces Round #206 (Div. 2) A. Vasya and Digital Root
- An Adaptive Communication Architecture for Wireless Sensor Networks
- 归一化
- iOS - 版面实现记录五
- 动态修改script标签中的src属性存在的问题
- php+MySQL图书管理系统(一)
- Android系统手机端抓包方法(tcpdump)
- 【JSOI 2008】【BZOJ 1016】最小生成数计数