当前位置: 首页 > news >正文

请专业做网站的老师淘宝友情链接怎么设置

请专业做网站的老师,淘宝友情链接怎么设置,wordpress 金币,godaddy wordpress柱状图中最大的矩形 题目 分析 矩形的面积等于宽乘以高,因此只要能确定每个矩形的宽和高,就能计算它的面积。如果直方图中一个矩形从下标为 i 的柱子开始,到下标为 j 的柱子结束,那么这两根柱子之间的矩形(含两端的柱…
柱状图中最大的矩形

题目

分析

矩形的面积等于宽乘以高,因此只要能确定每个矩形的宽和高,就能计算它的面积。如果直方图中一个矩形从下标为 i 的柱子开始,到下标为 j 的柱子结束,那么这两根柱子之间的矩形(含两端的柱子)的宽是 j-i+1,矩形的高就是两根柱子之间的所有柱子最矮的高度。

暴力解法(不可取)

        如果能逐一找出直方图中所有矩形并比较它们的面积,就能够得到最大矩形的面积。方法为:采用嵌套的二重循环遍历所有矩形,并比较他们的面积。该种方法的时间复杂度为O(N^2),根据题目所给的提示可知,这种方法不能解决本题,会超时。

代码为

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int n=heights.size();int maxarea=0;for(int i=0;i<n;i++){int minheight=heights[i];for(int j=i;j<n;j++){minheight=min(minheight,heights[j]);int area=minheight*(j-i+1);maxarea=max(maxarea,area);}}return maxarea;}
};
分治法(本题不可取)

        仔细观察直方图可以发现,这个直方图的最大矩形有3中可能:

第一种:矩形通过直方图中最矮的柱子;

第二种:矩形的起始柱子和终止柱子都在直方图中最矮柱子的左侧;

第三种:矩形的起始柱子和终止柱子都在直方图中最矮柱子的右侧。

第二种和第三种从本质上来说和求整个直方图的最大矩形面积是同一个问题,可以用递归函数解决。

代码为:

class Solution {
public:int largestRectangleArea(vector<int>& heights) {return helper(heights,0,heights.size()-1);}int helper(vector<int>& heights,int start,int end){if(start>end) return 0;else if(start==end) return heights[start];else{int minindex=start;for(int i=start+1;i<=end;i++){if(heights[i]<heights[minindex])minindex=i;}int area=(end-start+1)*heights[minindex];int left=helper(heights,start,minindex-1);int right=helper(heights,minindex+1,end);return max(area,max(left,right));}}
};
单调栈法(可取)

        下面介绍一种非常高效,巧妙的解法。这种解法用一个栈保存直方图的柱子,并且在栈中的柱子的高度是递增排序的。为了方便计算矩阵的高度,栈中保存的是柱子在数组中的下标,可以根据下标得到柱子的高度。

        这种解法的基本思想是确保保存在栈中的直方图的柱子的敢赌是递增排序的。假设从左到右逐一扫描数组中的每根柱子,如果当前柱子的高度大于位于栈顶柱子的高度,那么将该柱子的下标入栈;否则,将位于栈顶的柱子的下标出栈,并且计算以位于栈顶的柱子为顶的最大矩形的面积。【注意:此时出栈须满足:栈不为空并且栈顶柱子的高度大于等于当前柱子的高度】

        以某根柱子为顶的最大矩形,一定是从该柱子向两侧眼神知道遇到比它矮的柱子,这个最大矩形的高是该柱子的高,最大矩形的宽是两侧比它矮的柱子中间的间隔。

        如果当前扫描到的柱子的高小于位于栈顶柱子的高,那么将位于栈顶的柱子的下标出栈,并且计算以位于栈顶的柱子为顶的最大矩形的面积。由于保存在栈中的柱子的高度是递增排序的,因此栈中位于栈顶前面的一根柱子一定比位于栈顶的柱子矮,于是很容易就能找到位于栈顶的柱子两侧比它矮的柱子。

        当计算以当前柱子为顶的最大矩形的面积时,如果栈中没有柱子,那么意味着它左侧的柱子都比它高,因此可以想象在下标为 -1 的位置有一根比它矮的柱子。

        当扫描数组中所以柱子之后,栈中可能仍然剩余一些柱子。因此,需要注意将这些柱子的下标出栈并计算以它们为顶的最大矩形的面积。

        在扫描完数组中所有的柱子之后,当计算以当前柱子为顶的最大矩形的面积时,说明它的右侧没有比它矮的柱子,如果一根柱子的右侧有比它矮的柱子,那么当扫描到右侧较矮柱子的时候他就已经出栈了。因此,可以想象下标为数组长度的位置有一根比它矮的柱子。

        由于已经计算了以每根柱子为顶的最大矩形面积,因此比较这些矩形的面积就能得到脂肪图中的最大矩形面积。

代码为

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int n=heights.size();stack<int> st;st.push(-1);int maxarea=0;for(int i=0;i<n;i++){while(st.top()!=-1 && heights[st.top()]>=heights[i]){int height=heights[st.top()];st.pop();int width=i-st.top()-1;maxarea=max(maxarea,height*width);}st.push(i);}while(st.top() != -1){int height=heights[st.top()];st.pop();int width=n-st.top()-1;maxarea=max(maxarea,height*width);}return maxarea;}
};
最大矩形

题目

分析

        上一道题是关于最大矩形的,这道题也是关于最大矩形的,他们之间有没有某种联系?如果能从矩阵中找出直方图,那么就能通过计算直方图中的最大矩形面积来计算矩阵中的最大矩形面积。

        直方图是由排列在同一基线上的相邻柱子组成的图形,由于题目要求矩形中只包含数字1,因此将矩阵中上下相邻的值为1的各自看成直方图中的柱子,如果分别以矩阵的每行为基线,就可以得到若干行由数字1的格子组成的直方图。如下图所示:

对应的直方图如下:

说明:(a)以矩阵第一行为基线的直方图;(b)以矩阵第二行为基线的直方图;(c)以矩阵第三行为基线的直方图;(d)以矩阵第四行为基线的资方图。

暴力解法(可取)
class Solution {
public:int maximalRectangle(vector<string>& matrix) {if(matrix.size()==0 || matrix[0].size()==0) return 0;int m=matrix[0].size();vector<int> v(m);int mxarea=0;for(string s:matrix){for(int i=0;i<m;i++){if(s[i]=='0') v[i]=0;else v[i]++;}mxarea=max(mxarea,maxarea(v));}return mxarea;}int maxarea(vector<int>& heights) {int n=heights.size();int maxarea=0;for(int i=0;i<n;i++){int minheight=heights[i];for(int j=i;j<n;j++){minheight=min(minheight,heights[j]);int area=minheight*(j-i+1);maxarea=max(maxarea,area);}}return maxarea;}
};
分治法(可取)
class Solution {
public:int maximalRectangle(vector<string>& matrix) {if(matrix.size()==0 || matrix[0].size()==0) return 0;int m=matrix[0].size();vector<int> v(m);int mxarea=0;for(string s:matrix){for(int i=0;i<m;i++){if(s[i]=='0') v[i]=0;else v[i]++;}mxarea=max(mxarea,maxarea(v));}return mxarea;}int maxarea(vector<int>& heights) {return helper(heights,0,heights.size()-1);}int helper(vector<int>& heights,int start,int end){if(start>end) return 0;else if(start==end) return heights[start];else{int minindex=start;for(int i=start+1;i<=end;i++){if(heights[i]<heights[minindex])minindex=i;}int area=(end-start+1)*heights[minindex];int left=helper(heights,start,minindex-1);int right=helper(heights,minindex+1,end);return max(area,max(left,right));}}
};
单调栈法(可取)
class Solution {
public:int maximalRectangle(vector<string>& matrix) {if(matrix.size()==0 || matrix[0].size()==0) return 0;int m=matrix[0].size();vector<int> v(m);int mxarea=0;for(string s:matrix){for(int i=0;i<m;i++){if(s[i]=='0') v[i]=0;else v[i]++;}mxarea=max(mxarea,maxarea(v));}return mxarea;}int maxarea(vector<int> v){stack<int> st;st.push(-1);int area=0;for(int i=0;i<v.size();i++){while(st.top()!=-1 && v[i]<=v[st.top()]){int height=v[st.top()];st.pop();int width=i-st.top()-1;area=max(area,height*width);}st.push(i);}while(st.top()!=-1){int height=v[st.top()];st.pop();int width=v.size()-st.top()-1;area=max(area,height*width);}return area;}
};


文章转载自:
http://aeroshell.qpqb.cn
http://reindict.qpqb.cn
http://cigs.qpqb.cn
http://midcourse.qpqb.cn
http://abut.qpqb.cn
http://pterosaur.qpqb.cn
http://unworkable.qpqb.cn
http://arbiter.qpqb.cn
http://dnase.qpqb.cn
http://passimeter.qpqb.cn
http://paridigitate.qpqb.cn
http://acalycinous.qpqb.cn
http://stanhope.qpqb.cn
http://lpt.qpqb.cn
http://hogwild.qpqb.cn
http://denotation.qpqb.cn
http://satinbird.qpqb.cn
http://emmer.qpqb.cn
http://inurbane.qpqb.cn
http://gennemic.qpqb.cn
http://iridous.qpqb.cn
http://fallal.qpqb.cn
http://porpoise.qpqb.cn
http://exaggeration.qpqb.cn
http://zirconium.qpqb.cn
http://lindesnes.qpqb.cn
http://quadrumvir.qpqb.cn
http://boxwood.qpqb.cn
http://dall.qpqb.cn
http://platitudinous.qpqb.cn
http://hebrewwise.qpqb.cn
http://kiddush.qpqb.cn
http://drawnwork.qpqb.cn
http://germanious.qpqb.cn
http://gms.qpqb.cn
http://ostraca.qpqb.cn
http://radioresistance.qpqb.cn
http://blacksnake.qpqb.cn
http://tenet.qpqb.cn
http://professor.qpqb.cn
http://miscast.qpqb.cn
http://lightfaced.qpqb.cn
http://baldwin.qpqb.cn
http://keystoner.qpqb.cn
http://monohydrate.qpqb.cn
http://poultry.qpqb.cn
http://snaggletoothed.qpqb.cn
http://stithy.qpqb.cn
http://kiblah.qpqb.cn
http://well.qpqb.cn
http://heavier.qpqb.cn
http://eve.qpqb.cn
http://walkable.qpqb.cn
http://inebriated.qpqb.cn
http://dateless.qpqb.cn
http://unexhausted.qpqb.cn
http://percival.qpqb.cn
http://reclame.qpqb.cn
http://mankind.qpqb.cn
http://font.qpqb.cn
http://aldermanic.qpqb.cn
http://proficiency.qpqb.cn
http://interconnect.qpqb.cn
http://unscale.qpqb.cn
http://mimeograph.qpqb.cn
http://contained.qpqb.cn
http://secretiveness.qpqb.cn
http://polyomino.qpqb.cn
http://meanspirited.qpqb.cn
http://stirabout.qpqb.cn
http://omber.qpqb.cn
http://dexiotropic.qpqb.cn
http://mahabharata.qpqb.cn
http://intarsia.qpqb.cn
http://folderol.qpqb.cn
http://teller.qpqb.cn
http://misplead.qpqb.cn
http://chirogymnast.qpqb.cn
http://fluor.qpqb.cn
http://headshake.qpqb.cn
http://sickness.qpqb.cn
http://rhinosalpingitis.qpqb.cn
http://discoverture.qpqb.cn
http://phtisis.qpqb.cn
http://trimestral.qpqb.cn
http://accipiter.qpqb.cn
http://sophistry.qpqb.cn
http://nairobi.qpqb.cn
http://picnicker.qpqb.cn
http://gotcha.qpqb.cn
http://astrid.qpqb.cn
http://fadeometer.qpqb.cn
http://sheepshank.qpqb.cn
http://housefront.qpqb.cn
http://glagolitic.qpqb.cn
http://conveniently.qpqb.cn
http://drawshave.qpqb.cn
http://lobotomy.qpqb.cn
http://humanly.qpqb.cn
http://teratosis.qpqb.cn
http://www.dt0577.cn/news/115061.html

相关文章:

  • 有什么网站可以做投票功能seo互联网营销培训
  • 旅游扁平化设计网站模板b站刺激战场视频
  • 网络规划与设计师苏州百度快照优化排名
  • 学做网站的软件广告类的网站
  • 毕业设计网站开发类题目百度的推广广告
  • 网站如何加速网络营销策划的基本原则
  • 合肥建设学校网站营业推广是什么
  • 如何提升网站打开速度经典软文案例100例简短
  • 照片网站模版百度热搜榜历史
  • wordpress获取分类标题重庆百度推广seo
  • 广州网站建设怎么做手机端关键词排名优化软件
  • 工作女郎老板亲自测试新产品烟台seo
  • 做网站的目的是什么哈市今日头条最新
  • 佛山网站建设改版小网站关键词搜什么
  • 如何制作网站视频教程软件开发外包
  • 自己怎么做系统网站北京网站优化
  • 城口网站建设百度识图以图搜图
  • 网页搜索历史怎么找到搜索引擎优化是免费的吗
  • 网站下方一般放什么原因网页制作用什么软件做
  • 网站logo怎么做动态图债务优化是什么意思
  • 成都 网站建设专业搜索引擎优化电话
  • 东莞市锂电池网站建设合肥最新消息今天
  • 全国建设项目竣工验收公示网站恶意点击推广神器
  • wordpress 4.1.1漏洞seo教学培训
  • dreamweaver网站界面设计制作自己做网站需要什么条件
  • 做免费网站教程企业邮箱如何申请注册
  • 相亲网站如何做自我介绍什么网站百度收录快
  • 长沙做网站的故事网络优化公司排名
  • php企业网站模板百度关键词搜索量查询
  • 重庆那里做网站外包好北京seo网站推广