LeetCode Largest Rectangle in Histogram
来源:互联网 发布:中国书画网络频道 编辑:程序博客网 时间:2024/04/28 07:22
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 has area = 10
unit.
For example,
Given height = [2,1,5,6,2,3]
,
return 10
.
#include <iostream>#include <string>#include <vector>#include <assert.h>using namespace std;class Solution {public: int largestRectangleArea(vector<int> &height) { int len = height.size(); if(len == 0) return -1; int min = 0; int maxArea = 0; recursion(height, 0, len - 1, maxArea); return maxArea; } void recursion(vector<int> &ivec, int L, int R, int &maxArea) { if(L > R) return; int i = CalArea(ivec, L, R, maxArea); recursion(ivec, L, i - 1, maxArea); recursion(ivec, i + 1, R, maxArea); } int CalArea(vector<int> &ivec, int L, int R, int &maxArea) { assert(L <= R); int min = ivec[L]; int k = L; for(int i = L + 1; i <= R; ++i) { if(ivec[i] < min) { min = ivec[i]; k = i; } } int area = min * (R - L + 1); if(area > maxArea) maxArea = area; return k; }};int main(void){ vector<int> ivec = {2,1,5,6,2,3}; Solution ss; int ret = ss.largestRectangleArea(ivec); cout << ret << endl; }
参考: http://blog.csdn.net/doc_sgl/article/details/11805519 一个使用栈的方法
class Solution {public: int largestRectangleArea(vector<int> &height) { if(height.size() == 0) return 0; height.push_back(0); stack<int> istack; int maxArea = 0; int i = 0; while(i < height.size()) { if(istack.empty() || height[i] >= height[istack.top()]) { istack.push(i++); } else { int t = istack.top(); istack.pop(); maxArea = max(maxArea, height[t] * (istack.empty() ? i : i - istack.top() - 1)); } } return maxArea;
0 0
- LeetCode: Largest Rectangle in Histogram
- LeetCode Largest Rectangle in Histogram
- LeetCode: Largest Rectangle in Histogram
- [Leetcode] Largest Rectangle in Histogram
- [LeetCode] Largest Rectangle in Histogram
- [Leetcode] Largest Rectangle in Histogram
- [leetcode] Largest Rectangle in Histogram
- [LeetCode]Largest Rectangle in Histogram
- Leetcode: Largest Rectangle in Histogram
- [leetcode]Largest Rectangle in Histogram
- Leetcode:Largest Rectangle in Histogram
- LeetCode-Largest Rectangle in Histogram
- LeetCode Largest Rectangle in Histogram
- [LeetCode] Largest Rectangle in Histogram
- leetcode Largest Rectangle in Histogram
- [LeetCode] Largest Rectangle in Histogram
- leetcode Largest Rectangle in Histogram
- <Leetcode>Largest Rectangle in Histogram
- 2014.09.18 周五-jsp开发模式:计算器-三层结构-el、jstl
- 数组
- Spring中接口编程
- Java内部类总结
- ECSHOP后台上传中文名称图片乱码解决方法
- LeetCode Largest Rectangle in Histogram
- Spring的内部bean与空间命名
- Eclipse快捷键 10个最有用的快捷键
- 一个习惯
- 黑马程序员——C语言9月18号学习日记
- Spring中装配集合
- 2014年最新申请IDP账号的过程(含DUNS申请方法)
- 0034算法笔记——【分支限界法】最优装载问题
- Spring中自动装配