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