题目:Maximal Square
2015-08-21 00:03
302 查看
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
For example, given the following matrix:
Return
标签 Expand
动态规划
根据题意可用动态规划去求解,先求解出最大的正方形边长
若a[m,n] = 1
a[m,n] = min(a[m-1,n-1],min(a[m-1,n],a[m,n-1]))+1;
比如
10100
10111
11111
10010
求解后
10100
10111
11122
10010
求出最大的边长,面积=边长*边长
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
For example, given the following matrix:
1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0
Return
4.
标签 Expand
动态规划
根据题意可用动态规划去求解,先求解出最大的正方形边长
若a[m,n] = 1
a[m,n] = min(a[m-1,n-1],min(a[m-1,n],a[m,n-1]))+1;
比如
10100
10111
11111
10010
求解后
10100
10111
11122
10010
求出最大的边长,面积=边长*边长
public class Solution { /** * @param matrix: a matrix of 0 and 1 * @return: an integer */ public int maxSquare(int[][] matrix) { // write your code here if(null==matrix||0==matrix.length) return 0; int m = matrix.length; int n = matrix[0].length; int squareArr[][] = new int[m] ; int res = 0; for(int i=0;i<m;i++){ if(matrix[i][0]==1){ squareArr[i][0] = 1; res = 1; } } for(int j=0;j<n;j++){ if(matrix[0][j]==1){ squareArr[0][j]=1; res = 1; } } for(int i=1;i<m;i++){ for(int j=1;j<n;j++){ if(matrix[i][j]==1){ squareArr[i][j] = min(squareArr[i-1][j-1], min(squareArr[i][j-1],squareArr[i-1][j]))+1; res = max(res, squareArr[i][j]*squareArr[i][j]); } } } return res; } public int min(int a,int b){ return a>b?b:a; } public int max(int a, int b){ return a>b?a:b; } }
相关文章推荐
- GNOME Linux 桌面入门
- 如何使用 Cachet 部署自承载系统状态页面
- LLVM 五月上海迷你工作坊,欢迎你的到来
- 剖析Python的Tornado框架中session支持的实现代码
- Python编程中的异常处理教程
- Python中条件判断语句的简单使用方法
- Python中for循环和while循环的基本使用方法
- win7系统配置php+Apache+mysql环境的方法
- PHP的Yii框架使用中的一些错误解决方法与建议
- MYSQL5.X重置root密码 (windows系统)
- SpringMVC简单构造restful, 并返回json——(一)
- resin
- vim常用命令
- PHP的Yii框架的基本使用示例
- 使用PHP进行微信公众平台开发的示例
- 详细解读PHP的Yii框架中登陆功能的实现
- jQuery实现大转盘抽奖活动仿QQ音乐代码分享
- 纯javascript实现图片延时加载方法
- jQuery实现的产品自动360度旋转展示特效源码分享
- jquery带翻页动画的电子杂志代码分享