leetcode.84 柱狀圖中最大的矩形

84. 柱狀圖中最大的矩形

給定 n 個非負整數,用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰,且寬度爲 1 。

求在該柱狀圖中,能夠勾勒出來的矩形的最大面積。

 

以上是柱狀圖的示例,其中每個柱子的寬度爲 1,給定的高度爲 [2,1,5,6,2,3]

 

圖中陰影部分爲所能勾勒出的最大矩形面積,其面積爲 10 個單位。

 

示例:

輸入: [2,1,5,6,2,3]
輸出: 10

這道題可以說是很經典了

遇見過很多次類似的,什麼刷油漆了,柵欄了巴拉巴拉

說一下思路

算了,這個人說的極好的,你們看這個人的把

https://blog.csdn.net/Zolewit/article/details/88863970

#include <iostream>
#include <vector>
#include <stack>
#include <math.h>

using namespace std;

int largestRectangleArea(vector<int>& heights) {
	int i;
	stack<int> stk;
	int maxsize = 0;
	heights.push_back(0);
	int len = heights.size();

	for(i = 0; i < len; i++){
		while(!stk.empty() && heights[i] < heights[stk.top()]){
			int top = stk.top();
			stk.pop();
			if(stk.empty()){
				maxsize = max(maxsize, heights[top] * i);
			}
			else{
				maxsize = max(maxsize, heights[top] * (i - stk.top() - 1));
			}
		}
		stk.push(i);
	}  
	return maxsize;
}

int main(){
	int h[] = {2,1,5,6,2,3};
	vector<int> heights(h, h + 6);
	int re = largestRectangleArea(heights);
	cout << re << endl;
}












 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章