Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and return its area.

解题思路:

求01矩阵中,全是1的子矩阵的最大面积。

把矩阵按照每一行看做是直方图,可以转化为上一题,JAVA实现如下:

	static public int maximalRectangle(char[][] matrix) {
if(matrix.length==0||matrix[0].length==0)
return 0;
int result=0;
int[] dp=new int[matrix[0].length];
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++)
if(matrix[i][j]=='1')
dp[j]++;
else dp[j]=0;
result=Math.max(result, largestRectangleArea(dp));
}
return result;
}
public static int largestRectangleArea(int[] height) {
Stack<Integer> stk = new Stack<Integer>();
int ret = 0;
for (int i = 0; i <= height.length; i++) {
int h=0;
if(i<height.length)
h=height[i];
if (stk.isEmpty() || h >= height[stk.peek()])
stk.push(i);
else {
int top = stk.pop();
ret = Math.max(ret, height[top] * (stk.empty() ? i : i - stk.peek() - 1));
i--;
}
}
return ret;
}

最新文章

  1. Linux 升级glibc-2.14 失败 我遇到的问题
  2. java day2一个模拟双色球的代码
  3. am等adb命令小总结
  4. WPF 绑定三(绑定List中指定的字符串)
  5. QtWebkit2.2.0 HTML5.0支持情况
  6. 发现新大陆:一个最简单的破解SSL加密网络数据包的方法
  7. PyConChina2016 北京站 献给Python开发者
  8. 201521123028《Java程序设计》第4周学习总结
  9. shell编程/字库裁剪(3)——验证
  10. Oracle,Sql,procedure 感觉自己写的很棒的一个存储过程
  11. 插件开发之360 DroidPlugin源码分析(一)初识
  12. 【每日更新】【Redis学习】
  13. JavaScript中的原型链和继承
  14. 17.0-uC/OS-III消息管理
  15. Webpack 概念
  16. ***实用函数:PHP explode()函数用法、切分字符串,作用,将字符串打散成数组
  17. Confluence5.8协作平台软件安装(Linux)
  18. Ubuntu 16.04 kinetic 编译指定包
  19. 【opencv基础】测量运行时间的函数getTickCount/getCPUTickCount/getTickFrequency
  20. Ubuntu 网卡多个 IP 地址

热门文章

  1. 时间迭代和BigDecimal操作
  2. 【FUN】——英文版面青年教育网站策划&amp;GUI设计
  3. 转:java的各个拓展类库的推荐方案
  4. js 快速排序
  5. JAVA Eclipse 出现 load id=gralloc != hmi-id=gralloc怎么办
  6. 应用设置Setting的实现
  7. linux 木马
  8. InnoDB Insert(插入)操作(下)--mysql技术内幕
  9. 我如何添加一个空目录到Git仓库?
  10. 朴素贝叶斯分类算法-----java