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

做网站的空间是什么排名优化哪家专业

做网站的空间是什么,排名优化哪家专业,全网品牌推广,网店运营培训哪里好42. 接雨水 题目链接:42. 接雨水 - 力扣(LeetCode) 文章讲解:代码随想录 思路: 以 height [4,2,0,3,2,5]为例先求每根柱子左右边第一个高的 得到 5 3 3 5 5 -1 -1 4 2 4 3 -1 左右两边都不为-1才能接住水 初始化ans …

42. 接雨水

题目链接:42. 接雨水 - 力扣(LeetCode)

文章讲解:代码随想录

思路:

height = [4,2,0,3,2,5]为例

先求每根柱子左右边第一个高的

得到

5 3 3 5 5 -1

-1 4 2 4 3 -1

左右两边都不为-1才能接住水

初始化ans 为0

左右两边都不为-1的置为1

对于1 里边都能盛水

所盛水是 1的左右两边柱子的最小值 然后再减去1的柱子里边原本的高度

然后统计所有的水 j

class Solution {
public:int trap(vector<int>& height) {vector<int>right(height.size(),-1);vector<int>left(height.size(),-1);stack<int>st;st.push(0);for(int i=1;i<height.size();i++){   //右边第一个大的while(!st.empty()&&height[i]>height[st.top()]){right[st.top()]=height[i];st.pop();}st.push(i);}stack<int>lst;lst.push(height.size()-1);for(int i=height.size()-2;i>=0;i--){   //左边第一个大while(!lst.empty()&&height[i]>height[lst.top()]){left[lst.top()]=height[i];lst.pop();}lst.push(i);}vector<int>ans(height.size(),1);for(int i=0;i<height.size();i++){  //能盛水的单位if(left[i]==-1||right[i]==-1){ans[i]=0;}}for(int i=0;i<height.size();i++){if(ans[i]){int l=i-1;              //能盛水的区间int r;for(int j=i;j<height.size();j++){if(ans[j]==0){r=j;break;}}int num=min(height[l],height[r]);for(int j=l+1;j<r;j++){    //能盛水的区间每个柱子能接的水ans[j]=num-height[j];}i=r-1;}}int result=0;for(auto &x:ans){result+=x;}return result; }
};

解法2:

暴力解:

需要优化

class Solution {
public:int trap(vector<int>& height) {//暴力解法 求每根柱子能盛的水vector<int>lmax(height.size(),0);vector<int>rmax(height.size(),0);vector<int>ans(height.size(),0);int n=height.size();// 计算每个柱子左边最高的柱子for (int i = 1; i < n; ++i) {lmax[i] = max(lmax[i - 1], height[i - 1]);}// 计算每个柱子右边最高的柱子for (int i = n - 2; i >= 0; --i) {rmax[i] = max(rmax[i + 1], height[i + 1]);}for(int i=1;i<height.size()-1;i++){ans[i]=min(lmax[i],rmax[i])-height[i];}int result=0;for(auto &x:ans){if(x>=0) result+=x;}return result; }
};

 方法三:

单调栈

class Solution {
public:int trap(vector<int>& height) {int result=0;stack<int>st;st.push(0);for(int i=1;i<height.size();i++){if(!st.empty()&&height[i]<height[st.top()]){st.push(i);}else if(!st.empty()&&height[i]==height[st.top()]){st.push(i);}else{while(!st.empty()&&height[i]>height[st.top()]){int mid=st.top();st.pop();if (st.empty()) break;  // ✅ 必须加这个判断int h=min(height[st.top()],height[i]);int w=i-st.top()-1;//水量计算result+=w*(h-height[mid]);    }st.push(i);   //这一句放在循环外}}return result; }
};
84.柱状图中最大的矩形
题目链接:84. 柱状图中最大的矩形 - 力扣(LeetCode)
文章讲解:代码随想录

 思路:

考虑每个柱子的高度为高,然后计算最大的宽度,再计算面积。

比较上述面积的最大值

宽度的计算在于 寻找当前柱子左右两边第一个比它小的 l和r

那么w=r-l-1

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int size=heights.size();vector<int>leftMin(heights.size(),-1);   //左边第一个小的vector<int>rightMin(heights.size(),size); //右边第一个小的stack<int>lst;stack<int>rst;rst.push(0);for(int i=1;i<size;i++){while(!rst.empty()&&heights[i]<heights[rst.top()]){rightMin[rst.top()]=i;rst.pop();}rst.push(i);}lst.push(size-1);for(int i=size-2;i>=0;i--){while(!lst.empty()&&heights[i]<heights[lst.top()]){leftMin[lst.top()]=i;lst.pop();}lst.push(i);}int result=0;for(int i=0;i<size;i++){int r=rightMin[i];int l=leftMin[i];int w=r-l-1;int area=w*heights[i];result=max(result,area);}return result;}
};

http://www.dtcms.com/wzjs/827693.html

相关文章:

  • 实业公司网站建设设计师都上什么网站
  • 门户网站盈利做网站要源码吗
  • 网站备案个人和企业的区别房山网站制作
  • 湖州百度网站建设网站建设创意文案
  • 一般小型教育网站的建设和开发茶叶商城网站建设
  • 做网站公司 郑州龙之向导全球贸易
  • 怎样做好网站运营北京物流网站建设
  • 网站开发设计总结及心得体会外包 网站开发公司
  • 可以转app的网站怎么做昆明城乡建设局网站
  • 南宁网站建设seo基于django的电子商务网站开发
  • php网站建设带数据库模板wordpress分类目录进不去
  • 学习网站导航如何优化公司网站
  • 怎么在传奇网站上做宣传高端网站价格
  • 西安城乡住房建设厅网站网站制作大概费用
  • 邢台集团网站建设价格南通小程序制作
  • 网站做推广要备案吗国外photoshop素材网站
  • 电子商务网站建设含义安徽网站推广
  • 电子商务网站免费模板php c2c网站开发的 书
  • 巴中微小网站建设案例jsp网站空间网站开发
  • 可以做cps合作的棋牌网站6心馨人生网站建设设计
  • 西安有哪些做网站建设的公司怎样做一个微信公众号
  • 泰兴建设局网站网络营销导向型企业网站建设特征
  • 做网站三网多少钱ui设计发展前景及未来
  • 怎么自己做砍价网站国外手机网站欣赏
  • 天津网站建设业务郑州做网站便宜
  • 遵义做网站公司信息技术的网站建设是什么
  • 汕头网站建设优化南京历史文化网页设计
  • 海口网站制作公司企业培训师资格证报考2022
  • 做网站怎么字体全部变粗了推广软件有哪些
  • 我想克隆个网站 怎么做新建网站如何调试