diff --git a/C++/084. Largest Rectangle in Histogram.cpp b/C++/084. Largest Rectangle in Histogram.cpp new file mode 100644 index 0000000..72b8300 --- /dev/null +++ b/C++/084. Largest Rectangle in Histogram.cpp @@ -0,0 +1,22 @@ +class Solution { +public: + int largestRectangleArea(vector& heights) { //Monotone Stack + if (heights.empty()) + return 0; + heights.push_back(-1); + stack stk; + int ans = 0; + for (int i = 0; i < heights.size(); ++i){ + while (stk.size() && heights[stk.top()] > heights[i]){ + int cur = stk.top(); + stk.pop(); + if (stk.empty()) + ans = max(ans, heights[cur] * i); + else + ans = max(ans, heights[cur] * (i - stk.top() - 1)); + } + stk.push(i); + } + return ans; + } +}; \ No newline at end of file