当前位置: 首页 > news >正文

美丽定制 网站模板深圳燃气公司有哪几家

美丽定制 网站模板,深圳燃气公司有哪几家,黄骅网站,wordpress中文备份插件预备知识 84.柱状图中最大的矩形:题目链接 思路:在求柱状图最大面积时,我们可以枚举每一根柱子,并且假设这根柱子就是最大面积中最低的那一根柱子。由于最大面积的选中的柱子中,矩形的高取决于最低的柱子&#xff0c…

预备知识

84.柱状图中最大的矩形:题目链接

思路:在求柱状图最大面积时,我们可以枚举每一根柱子,并且假设这根柱子就是最大面积中最低的那一根柱子。由于最大面积的选中的柱子中,矩形的高取决于最低的柱子,现在已知矩形的高,知道矩形的宽即可求出最大矩形面积。矩形的宽如何求呢?如果我们对每一根柱子A,可以知道在左边第一个低于他的柱子是B,在右边第一个低于他的柱子是C,那么这两根柱子之间的柱子一定都高于等于柱子A,矩形的宽就为C-B-1。

我们可以开一个栈(存柱子的编号),并维护从栈顶到栈底,柱子高度是从高到低的,在遍历时会有以下几种情况:

  1. 当前柱子a 低于栈顶柱子b,那么可以得知柱子b右边第一个比他低的柱子就是a
  2. 当前柱子a 高于栈顶柱子b,那么可以得知:柱子b左边第一个比他低的柱子就是a
  3. 栈为空,说明左边没有比他低的柱子。
class Solution {
public:int largestRectangleArea(vector<int>& heights) {int n = heights.size();vector<int> l(n), r(n);stack<int>stk;int ans = 0;for(int i=0;i<n;i++){while(!stk.empty() && heights[i] < heights[stk.top()]){r[stk.top()] = i;stk.pop();}if(stk.empty()) l[i] = -1;else l[i] = stk.top();stk.push(i);}while(!stk.empty()){r[stk.top()] = n;stk.pop();}for(int i=0;i<n;i++){ans = max(ans,heights[i]*(r[i]-l[i]-1));}return ans;}
};

思路

想法1:按照上面的思路,枚举每一列,然后求得左边连续的长度和右边连续的长度,以这条边作为矩形的宽计算。但这种方法并不行,因为左右不一定都取最长,因为在一边取最长的前提下,另一边也取最长可能会影响矩形的高度,反而使矩形达不到最大。

思路:其实只需要求得左边连续的长度即可,换一种角度想,我枚举每一列时,其实是在枚举最大矩阵的优边界,那么即使我只计算了这一列左半部分的矩阵面积,右半部分的面积没有计算,显然不是最大矩阵。但是我可以在枚举下一列时,得到更大的面积,直到枚举到最大矩阵右边界的那一列,可以得到最大面积,这个最大面积就是右边界那一列左半部分的面积,无需再向右延伸。

class Solution {
public:int maximalRectangle(vector<vector<char>>& matrix) {int n = matrix.size();int m = matrix[0].size();int ans = 0;vector<vector<int>> l(n,vector<int>(m,0));// 计算左边连续了多少个1for(int i=0;i<n;i++)for(int j=0;j<m;j++)if(matrix[i][j] == '1')l[i][j] = j ? l[i][j-1] + 1 : 1;elsel[i][j] = 0;stack<int> stk;vector<int> up(n), down(n);for(int j=0;j<m;j++){for(int i=0;i<n;i++){while(!stk.empty() && l[i][j] < l[stk.top()][j])down[stk.top()] = i , stk.pop();if(!stk.empty()) up[i] = stk.top();else up[i] = -1;stk.push(i);}while(!stk.empty()){down[stk.top()] = n;stk.pop();}for(int i=0;i<n;i++)ans = max(ans, l[i][j]*(down[i]-up[i]-1));}return ans;}
};
http://www.yingshimen.cn/news/766/

相关文章:

  • 公司网站开发费用济南兴田德润o简介图片拖拽式在线网页制作工具
  • 图片模板网站免费知识库管理系统
  • 布吉网站建设哪家好建个注册页面网站
  • 揭阳商城网站建设免费网页游戏poki
  • 网站的建设步骤网站审批需要什么手续
  • 网站开发合同甲方的权利成都企业网站网络营销
  • 网站内容编辑工具wordpress主题2019
  • 网站建设艾瑞市场分析网站首页的图标是怎么做的
  • 济宁贵网站建设北京建设银行官网招聘网站
  • 哪里可以做虚拟货币网站ps软件下载电脑版教程
  • 用自己的网站做淘客网站开发中网页之间的连接形式有
  • 龙岗网站建设公司哪家口碑好在网站后台管理系统里产品说明怎么添加图片
  • 博客网站搭建wordpress网页走丢了
  • 十堰专业网站建设公司制作微信网站
  • 网站版面布局对seo管理评价一般通过
  • 广州市增城建设局网站台州网站搭建
  • 网站备案 费用做一个网站需要多久
  • 官方网站建设 找磐石网络一流想做个网站不知道做什么
  • 网站建设zvge西安seo顾问
  • 黄页网站软件应用大全亲子装网站建设
  • 适合做网站的图片一页网站
  • 上海网站建设招聘网站app免费软件
  • 优化网站排名工具2023年又开始封控了吗
  • 湖南网站建设 要上磐石网络网站建设如何增加流量
  • 实体店铺托管代运营内江网站怎么做seo
  • 学做静态网站网站是哪家公司开发的
  • 万网网站价格做网络推广为什么会被抓
  • 建设信用卡积分商城网站找人做网站要多少钱
  • 网站设计全包营销型网站建设主要教学内容
  • 免费网站空间申请哪个好网站的页面布局是什么样的