LeetCode: Largest Rectangle in Histogram
2013-04-02 05:11
441 查看
没想出来,看了网上答案再改了改
再贴段容易理解的代码
C#
View Code
class Solution { public: struct node { int left; int right; }; int largestRectangleArea(vector<int> &height) { // Start typing your C/C++ solution below // DO NOT write int main() function int n = height.size(); vector<struct node> record(n); for (int i = 0; i < n; i++) { record[i].left = i; while (record[i].left > 0 && height[i] <= height[record[i].left-1]) record[i].left = record[record[i].left-1].left; } for (int i = n-1; i >= 0; i--) { record[i].right = i; while (record[i].right < n-1 && height[i] <= height[record[i].right+1]) record[i].right = record[record[i].right+1].right; } int largest = 0; for (int i = 0; i < n; i++) largest = max(largest, height[i] * (record[i].right - record[i].left + 1)); return largest; } };
再贴段容易理解的代码
class Solution { public: int largestRectangleArea(vector<int> &h) { stack<int> S; h.push_back(0); int sum = 0; for (int i = 0; i < h.size(); i++) { if (S.empty() || h[i] > h[S.top()]) S.push(i); else { int tmp = S.top(); S.pop(); sum = max(sum, h[tmp]*(S.empty()? i : i-S.top()-1)); i--; } } return sum; } };
C#
public class Solution { public int LargestRectangleArea(int[] height) { Stack<int> S = new Stack<int>(); int[] heights = new int[height.Length+1]; int sum = 0; Array.Copy(height, heights, height.Length); for (int i = 0; i < heights.Length; i++) { if (S.Count == 0 || heights[i] > heights[S.Peek()]) S.Push(i); else { int peek = S.Peek(); S.Pop(); sum = Math.Max(sum, heights[peek]*(S.Count == 0? i : i-S.Peek()-1)); i--; } } return sum; } }
View Code
相关文章推荐
- 柱状图内最大的矩形面积 Largest Rectangle in Histogram @LeetCode
- Largest Rectangle in Histogram--LeetCode
- leetcode Largest Rectangle in Histogram 单调栈
- [Leetcode] Largest Rectangle in Histogram
- LeetCode: Largest Rectangle in Histogram, a naive solution
- LeetCode Largest Rectangle in Histogram
- 解题报告: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 题目答案 Largest Rectangle in Histogram 极品解法的解释
- LeetCode84 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