博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode-85 Maximal Rectangle
阅读量:5051 次
发布时间:2019-06-12

本文共 1173 字,大约阅读时间需要 3 分钟。

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

思路:

 

       

如上图所示,我们以i行为底边,比如以第5行为底边,则每一列的高度为[2, 5, 4, 0];

问题可以转变为求面积最大的柱形区间,因而问题可以转化成;

我们需要计算以每一行为底边时的最大面积,当计算得到以最后一行为底边的最大面积时,即为问题的解。

代码如下:

public int maximalRectangle(char[][] matrix) {        if(matrix == null || matrix.length == 0)            return 0;        int m = matrix.length;        int n = matrix[0].length;        int[] A = new int[n];        int max = 0;        for(int i=0; i
stack = new Stack
(); int current = 0; int max = 0; for(int i=0; i<=A.length;) { if(i == A.length) { current = 0; } else { current = A[i]; } if(stack.isEmpty() || current > A[stack.peek()]) { stack.push(i); i++; } else { int height = A[stack.pop()]; int length = stack.isEmpty() ? i : i - stack.peek() - 1; max = Math.max(max, height * length); } } return max; }

 

转载于:https://www.cnblogs.com/linxiong/p/4348533.html

你可能感兴趣的文章
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
一个关于vue+mysql+express的全栈项目(六)------ 聊天模型的设计
查看>>
【知识库】-数据库_MySQL 的七种 join
查看>>
.net 写文件上传下载webservice
查看>>
noSQL数据库相关软件介绍(大数据存储时候,必须使用)
查看>>
iOS开发——缩放图片
查看>>
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
【BZOJ4487】[JSOI2015] 染色问题(高维容斥)
查看>>
Ubuntu 环境变量
查看>>
一步一步学MySQL-日志文件
查看>>
bzoj3994: [SDOI2015]约数个数和
查看>>
hdu5306 Gorgeous Sequence
查看>>
Android中使用ListView实现下拉刷新和上拉加载功能
查看>>
proc文件系统的简介
查看>>
连续自然数和
查看>>
[SDOI2015]星际战争
查看>>
用好lua+unity,让性能飞起来——luajit集成篇/平台相关篇
查看>>
JS控制页面跳转
查看>>