leetcode:求直方圖構成的矩形最大面積
Given n non-negative integers representing the histogram's bar height where the width of
each bar is 1,find the area of largest rectangle in the histogram.
Above is a histogram where width of each bar is 1,given height=[2,1,5,6,2,3]
The largest rectangle is shown in the shaded area,which haa area=10 unit.
Example 1:
Input:[2,1,5,6,2,3]
Output:10
解題思路:
方法1:
暴力以height為標準進行列舉,時間超時.
方法2:
利用單調遞增棧的思想.
#include <iostream>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
class Solution{
public:
#if 0
int largestRectangleArea(vector<int>& heights){
if(heights.empty())
return 0;
int area=0,h=0,left,right;
for(auto i=0;i<heights.size();i++){
left=i,right=i,h=heights[i];
while(left>0&&heights[i]<=heights[left-1]){left--;};
while(right<heights.size()-1&&heights[i]<=heights[right+1]){right++;};
area=max(area,(right-left+1)*h);
}
return area;
}
#endif
int largestRectangleArea(vector<int>& heights){
if(heights.empty())
return 0;
heights.push_back(-1);/*這樣可以計算heights陣列所有的元素*/
stack<int> des;
int area=0,left;
for(auto i=0;i<heights.size();i++){
if(des.empty()||heights[des.top()]<=heights[i]){
des.push(i);
}else{
while(!des.empty()&&heights[des.top()]>heights[i]){
left=des.top();
des.pop();
area=max(area,(i-left)*heights[left]);
}
des.push(left);/*入棧*/
heights[left]=heights[i];/*記憶元素*/
}
}
return area;
}
};
int main(int argc,char* argv[]){
vector<int> heights={6,7,5,2,4,5,9,3};/*0、1、2、3、4、5、6、7*/
cout<<Solution().largestRectangleArea(heights)<<endl;
return 0;
}
相關文章
- 直方圖中最大矩形直方圖
- 求矩形周長與面積
- LeetCode 492[構造矩形]LeetCode
- LeetCode_84.柱狀圖中最大的矩形LeetCode
- 直方圖學習直方圖
- 直方圖均衡化直方圖
- 【leetcode】劍指 Offer II 105. 島嶼的最大面積-【深度優先DFS】LeetCode
- 聊一聊MySQL的直方圖MySql直方圖
- halcon-直方圖均衡直方圖
- python如何畫直方圖Python直方圖
- [Python影象處理] 十一.灰度直方圖概念及OpenCV繪製直方圖Python直方圖OpenCV
- OpenCV計算機視覺學習(9)——影像直方圖 & 直方圖均衡化OpenCV計算機視覺直方圖
- 一文搞懂 Prometheus 的直方圖Prometheus直方圖
- matplotlib的直方圖繪製(筆記)直方圖筆記
- Code Review Swift 演算法題: 最小面積矩形 Leetcode 的動人之處ViewSwift演算法LeetCode
- 銀彈谷:IT層大面積應用成低程式碼平臺落地的主要特徵特徵
- Matplotlib直方圖繪製技巧直方圖
- elasticsearch 之 histogram 直方圖聚合ElasticsearchHistogram直方圖
- Leetcode 169:求眾數(最詳細的解法!!!)LeetCode
- python 資料視覺化:直方圖、核密度估計圖、箱線圖、累積分佈函式圖Python視覺化直方圖函式
- LeetCode 836[矩形重疊]LeetCode
- 淺析MySQL 8.0直方圖原理MySql直方圖
- 【沃趣科技】直方圖系列1直方圖
- OpenCV之影象直方圖均衡化OpenCV直方圖
- 你知道直方圖都能幹啥?直方圖
- 一文搞懂直方圖均衡直方圖
- [20221227]Adaptive Cursor Sharing & 直方圖.txtAPT直方圖
- opencv——影像直方圖與反向投影OpenCV直方圖
- CAD如何繪製固定面積的矩形
- 計算兩豎直直線與橢圓圍成部分面積
- 【ALGO】Leetcode 85.最大矩形GoLeetCode
- 柱狀圖、直方圖、散點圖、餅圖講解直方圖
- 直方圖均衡化原理與實現直方圖
- 灰度直方圖均衡化及其實現直方圖
- 深度學習(模型引數直方圖)深度學習模型直方圖
- 我用演算法學golang(島嶼的最大面積)演算法Golang
- HISTOGRA - 最大矩形面積(單調棧)
- 刷題40-最大矩形面積