Leetcode:Largest Rectangle in Histogram
2013-07-29 12:16
417 查看
寻找直方图最大面积
对于 index=i 往左寻找第一个比i低的直方图p 往右寻找第一个比i低的直方图q 则以height[i]为高度的面积为 (q-p+1)*height[i];
直接遍历 超时了,可以用使用dp
新建两个数组 left和right 。 left[i]保存 左边第一个比i低得直方图标签 转移方程有 (设left[0]=-1)
int p = i-1;
while(p!=-1)
{
if(height[p]<height[i])
break;
p = left[p];
}
left[i] = p;
大数据 84 milli secs过的
对于 index=i 往左寻找第一个比i低的直方图p 往右寻找第一个比i低的直方图q 则以height[i]为高度的面积为 (q-p+1)*height[i];
直接遍历 超时了,可以用使用dp
新建两个数组 left和right 。 left[i]保存 左边第一个比i低得直方图标签 转移方程有 (设left[0]=-1)
int p = i-1;
while(p!=-1)
{
if(height[p]<height[i])
break;
p = left[p];
}
left[i] = p;
大数据 84 milli secs过的
class Solution { public: int largestRectangleArea(vector<int> &height) { // Start typing your C/C++ solution below // DO NOT write int main() function int length = height.size(); int* left = new int[length+1]; int* right = new int[length+1]; left[0]=-1; right[length-1]=length; for(int i =1;i<length;i++) { int p = i-1; while(p!=-1) { if(height[p]<height[i]) break; p = left[p]; } left[i] = p; } for(int i= length-2;i>=0;i--) { int p = i+1; while(p!=length) { if(height[p]<height[i]) break; p = right[p]; } right[i]=p; } int result = 0; for(int i =0;i<length;i++) { int sum = (i-left[i]+right[i]-1-i)*height[i]; if(sum>result) result = sum; } return result; } };
相关文章推荐
- [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与Maximal Rectangle
- LeetCode - Largest Rectangle in Histogram 题解
- Leetcode 84 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_084 Largest Rectangle in Histogram
- leetcode 84 Largest Rectangle in Histogram (单调栈)
- LeetCode_Largest Rectangle in Histogram
- 106_leetcode_largest Rectangle in Histogram
- LeetCode | Largest Rectangle in Histogram(直方图围城的最大矩形面积)
- leetcode-Largest Rectangle in Histogram
- LeetCode 84 Largest Rectangle in Histogram
- leetcode 084 —— Largest Rectangle in Histogram