diff --git "a/topic01/submit/LC0084_\350\214\203\344\277\256\350\252\211.cpp" "b/topic01/submit/LC0084_\350\214\203\344\277\256\350\252\211.cpp" new file mode 100644 index 0000000000000000000000000000000000000000..b70bbbcd4b344703c90e9088cf326b726cae87b1 --- /dev/null +++ "b/topic01/submit/LC0084_\350\214\203\344\277\256\350\252\211.cpp" @@ -0,0 +1,32 @@ +class Solution { +public: + int largestRectangleArea(vector& heights) { + int n = heights.size(); + vector left(n), right(n); + + stack mono_stack; + for (int i = 0; i < n; ++i) { + while (!mono_stack.empty() && heights[mono_stack.top()] >= heights[i]) { + mono_stack.pop(); + } + left[i] = (mono_stack.empty() ? -1 : mono_stack.top()); + mono_stack.push(i); + } + + mono_stack = stack(); + for (int i = n - 1; i >= 0; --i) { + while (!mono_stack.empty() && heights[mono_stack.top()] >= heights[i]) { + mono_stack.pop(); + } + right[i] = (mono_stack.empty() ? n : mono_stack.top()); + mono_stack.push(i); + } + + int ans = 0; + for (int i = 0; i < n; ++i) { + ans = max(ans, (right[i] - left[i] - 1) * heights[i]); + } + return ans; + } +}; + diff --git "a/topic01/submit/LC0496_\350\214\203\344\277\256\350\252\211.cpp" "b/topic01/submit/LC0496_\350\214\203\344\277\256\350\252\211.cpp" new file mode 100644 index 0000000000000000000000000000000000000000..718b11dabae1d450a45eb5b7ecaa36b010caab85 --- /dev/null +++ "b/topic01/submit/LC0496_\350\214\203\344\277\256\350\252\211.cpp" @@ -0,0 +1,30 @@ +class Solution { +public: + vector nextGreaterElement(vector& nums1, vector& nums2) { + vector sum (nums1.size(),-1); + for(int i=0;i