leetcode Largest Rectangle in Histogram
来源:互联网 发布:mac word文件丢失 编辑:程序博客网 时间:2024/04/30 13:16
求解最大矩形,很容易想到O(n^2)的解法,只需要求解max(min(height(i...j)*(j-i+1))),0<=i<=j<n;
class Solution {public: int largestRectangleArea(vector<int> &height) { int ans=0,tans=0,len=height.size(); for(int i=0;i<len;i++){ int minh=height[i]; for(int j=0;j<=i;j++){ if(height[j]<minh)minh=height[j]; tans=(j-i+1)*minh; if(tans>ans)ans=tans; } } return ans; }
但是对于大的数据超时,通过用栈记录记录,从而将空间复杂度由O(1)到O(n),以空间换时间,将时间复杂度降到O(n)
class Solution {public: int largestRectangleArea(vector<int> &height) { int len=height.size(); if(len==0)return 0; stack<int >st; stack<int >index; int ans=0,tans=0; for(int i=0;i<len;i++){ if(st.empty()||height[i]>st.top()){//递增的话,放入 st.push(height[i]); index.push(i); }else if(st.top()>height[i]){//出现降序 int tindex=0; while(!st.empty()&&height[i]<st.top()){//计算山头部分的值 tindex=index.top(); index.pop(); tans=st.top()*(i-tindex); st.pop(); if(tans>ans)ans=tans;//记录最大 } st.push(height[i]);//记录 index.push(tindex); } } while(!st.empty()){//最后计算各个极小值情况 int tindex=index.top(); index.pop(); tans=st.top()*(len-tindex); st.pop(); if(tans>ans)ans=tans; } return ans; }};
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
- Ormlite开源数据库框架
- 12.3
- POJ 2329 (暴力+搜索bfs)
- textarea计算输入字符大小并限制输入
- 算法学习十八----寻找发帖水王
- leetcode Largest Rectangle in Histogram
- 3.1 创建线程执行器
- OpenCV_读取文件夹下的图片生成视频文件
- UML视图(五)活动图
- DELETE、TRUNCATE与高水位线(HWM)
- 《贺新郎.读史》 —— 毛泽东
- CommandName与CommandArgument
- POJ - 1475 Pushing Boxes
- storm problem