单调栈:


就是说:固定高度,寻找最长宽度,如何找最长宽度,需要从heights[i] 这一个元素开始向左向右两边寻找heights[j] - class Solution {
- public:
- int largestRectangleArea(vector<int>& heights) {
- stack<int> stk;
- int n=heights.size();
- vector<int> left(n,0);
- vector<int> right(n,0);
- for(int i=0;i
- while(stk.size()&&heights[stk.top()]>=heights[i])
- stk.pop();
- left[i] = (stk.size()==0? -1:stk.top());
- stk.push(i);
- }
- stk=stack<int>();
- for(int i=n-1;i>=0;i--){
- while(stk.size()&&heights[stk.top()]>=heights[i])
- stk.pop();
- right[i] = (stk.size()==0?n:stk.top());
- stk.push(i);
- }
- int res=0;
- for(int i=0;i
- res=max(res, (right[i]-left[i]-1)*heights[i]);
- }
- return res;
-
- }
- };
-
相关阅读:
PHP接收并处理请求中携带的xml格式的信息
【前端设计模式】之观察者模式
Java I/O(三)文件I/O
Map集合之HashMap细说
python opencv图片二值化后取出图片中心区域的轮廓
基于储能电站服务的冷热电多微网系统双层优化配置(Matlab代码实现)
代码随想录动态规划——最长回文子序列
Docker概念通讲
508 - Morse Mismatches (UVA)
七夕节最深情表白文案从此告别搓衣板
-
原文地址:https://blog.csdn.net/weixin_40823740/article/details/139753700