LeetCode 84--柱状图中最大的矩形( Largest Rectangle in Histogram) 85--最大矩形(Maximal Rectangle)
84题和85五题 基本是一样的,先说84题
84--柱状图中最大的矩形( Largest Rectangle in Histogram)
思路很简单,通过循环,分别判断第 i 个柱子能够延展的长度len,最后把len*heights[i] 就是延展开的面积,最后做比对,得出最大。
public int largestRectangleArea(int[] heights) {
int ans=0;
for(int i=0;i<heights.length;i++) {
int len=1,left=i,right=i;
while(left>0&&heights[--left]>=heights[i]) len++;//向左延展
while(right<heights.length-1&&heights[++right]>=heights[i]) len++; //向右延展
ans=Math.max(ans,heights[i]*len); //更新最大值
}
return ans;
}
这个方法效率不是很高,但是是最简单,也是最容易理解的。、
85--最大矩形(Maximal Rectangle)
这一题的思路与上一题相同。主要是第一步。
首先我们先建立一个大小和Matrix相同的大小的二维数组map
int Y=matrix.length;
int X=matrix[0].length;
int[][] map=new int[Y][X];
for(int y=0;y<Y;y++) {
for(int x=0;x<X;x++) {
if(matrix[y][x]=='1') {
/*假如matrix[y][x]=='1',就把当前位置的map值,加上map[y-1][x]的值,如
000 000
111 -》 111
101 202*/
if(y>0) {
map[y][x]=map[y-1][x]+1;
}else {
map[y][x]=1;
}
}
}
}
通过向下累加的方式,更新map,然后在对每一行的map[y],进行如84题的操作,就可以得出最大的面积
public int maximalRectangle(char[][] matrix) {
if(matrix.length==0||matrix[0].length==0) return 0;
int Y=matrix.length;
int X=matrix[0].length;
int[][] map=new int[Y][X];
for(int y=0;y<Y;y++) {
for(int x=0;x<X;x++) {
if(matrix[y][x]=='1') {
if(y>0) {
map[y][x]=map[y-1][x]+1;
}else {
map[y][x]=1;
}
}
}
}
int ans=0;
//这里和84题一样
for(int[] nums:map) {
for(int i=0;i<nums.length;i++) {
int len=1,left=i,right=i;
while(left>0&&nums[--left]>=nums[i]) len++;
while(right<nums.length-1&&nums[++right]>=nums[i]) len++;
ans=Math.max(ans,nums[i]*len);
}
}
return ans;
}
就是这样
LeetCode 84--柱状图中最大的矩形( Largest Rectangle in Histogram) 85--最大矩形(Maximal Rectangle)的更多相关文章
- LeetCode 84. 柱状图中最大的矩形(Largest Rectangle in Histogram)
题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的 ...
- LeetCode 84. 柱状图中最大的矩形(Largest Rectangle in Histogram)
84. 柱状图中最大的矩形 84. Largest Rectangle in Histogram
- Java实现 LeetCode 84 柱状图中最大得矩形
84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的 ...
- leetCode 84.Largest Rectangle in Histogram (最大矩形直方图) 解题思路和方法
Given n non-negative integers representing the histogram's bar height where the width of each bar is ...
- 【Leetcode】84. Largest Rectangle in Histogram 85. Maximal Rectangle
问题描述: 84:直方图最大面积. 85:0,1矩阵最大全1子矩阵面积. 问题分析: 对于84,如果高度递增的话,那么OK没有问题,不断添加到栈里,最后一起算面积(当然,面积等于高度h * disPo ...
- leetcode 84. 柱状图中最大的矩形 JAVA
题目: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高 ...
- [LeetCode] 84. 柱状图中最大的矩形
题目链接 : https://leetcode-cn.com/problems/largest-rectangle-in-histogram/ 题目描述: 给定 n 个非负整数,用来表示柱状图中各个柱 ...
- 73.Largest Rectangle in Histogram(最大矩形)
Level: Hard 题目描述: Given n non-negative integers representing the histogram's bar height where the ...
- LeetCode 84 | 单调栈解决最大矩形问题
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第52篇文章,我们一起来看LeetCode第84题,Largest Rectangle in Histogram( ...
- [LintCode] Maximal Rectangle 最大矩形
Given a 2D boolean matrix filled with False and True, find the largest rectangle containing all True ...
随机推荐
- linux下安装node.js时npm无法使用
安装node.js 10.15.1版本时,安装完在node的安装目录下执行./node -v查看node版本,成功则表示node已安装成功 [root@localhost bin]# ./node - ...
- vscode中如何自动保存
是的,vscode是个不错的编辑器,它的扩展功能能支持很多的语言,然后在实践过程中,我们发现每写好一次就得手动按CTRL+S,未免有点手酸,这时候我们就可以开启我们的自动保存功能,方式也很简单,在 文 ...
- Python学习笔记整理总结【Memcache & Redis(基础+主从架构)】
一.Memcached1.简介Memcached 是一个高性能的分布式内存对象缓存系统,一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度.提高可扩展性.用来存储 ...
- 性能测试之 Gatling
在应用程序上线之前,有多少人做过性能测试? 估计大部分开发者更多地关注功能测试,并且会提供一些单元测试和集成测试的用例.然而,有时候性能漏洞导致的影响比未发现的业务漏洞更严重,因为性能漏洞影响的是整个 ...
- 阿里云服务器CentOS6.9安装maven
1.下载maven http://maven.apache.org/download.cgi 2.移动到linux yangyuke用户下(此处由于我设置进入linux的是自定义用户yangyuke, ...
- 极光推送消息——Alias别称方式(Andirod)
1.pom文件引入相关jar包 <!--极光推送消息start--> <dependency> <groupId>net.sf.json-lib</group ...
- Mycat 关键特性
关键特性 支持SQL92标准 支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理. ...
- ArchLinux安(重)装指南
说实话,我其实是不想要出这篇博客的.在我这一个月安装Arch的过程中,让我感触比较深的一点是: 没有谁比这个系统的官方更懂它. 尤其是这种比较复杂的系统,更是如此. 这几天,我经历了一次重装,系统坏了 ...
- Windows Terminal 安装及美化
windows terminal 是今年微软Build大会上推出的一款的全新终端,用来代替cmder之类的第三方终端.具有亚克力透明.多标签.Unicode支持(中文,Emoji).自带等宽字体等这些 ...
- Kubernetes 系列(三):Kubernetes使用Traefik Ingress暴露服务
一.Kubernetes 服务暴露介绍 从 kubernetes 1.2 版本开始,kubernetes提供了 Ingress 对象来实现对外暴露服务:到目前为止 kubernetes 总共有三种暴露 ...