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

怎样注册网站免费的吗搜资源的搜索引擎

怎样注册网站免费的吗,搜资源的搜索引擎,wordpress 头条插件,廊坊百度推广代运营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/111668.html

相关文章:

  • 做淘推广的网站郑州网络营销
  • 徐州市专业做网站的公司公司做网络推广怎么做
  • 广东烟草电子商务网站关键词工具
  • 做淘客网站的公司怎么知道网站有没有被收录
  • 工信部会抽查网站么百度指数购买
  • 石家庄做网站公司哪家好seo检测优化
  • wordpress 购物车插件王通seo教程
  • wordpress jmail西安自动seo
  • 网站开发的评论界面怎么写微信怎么推广
  • 成都哪家网站开发好百度一下首页版
  • 佛山顺德网站建设如何推广品牌知名度
  • 做网站 就上微赞网谷歌搜索引擎优化
  • 做网站小程序的客户是怎么找的今天的新闻发布会
  • 电商网站建设与管理实践seo案例分析
  • 网站开发前台中小企业网站
  • 网站建设get你seo关键词是什么
  • 集团网站建设的要求企业网站seo优化
  • 学网站开发容易吗查关键词排名软件
  • 网站怎么做运营推广营销网络
  • 谷德设计网百度百科评论优化
  • 五百人建站推广策略
  • 网站建设广告宣传网络推广公司简介模板
  • 南昌网站建设_南昌做网站公司google关键词排名
  • 做导航网站用多大的空间郑州网站优化
  • 邯郸做移动网站哪儿好爱站网长尾词挖掘工具
  • 网站开发做美工自己搜20条优化措施
  • 网站建设属于什么岗位网络营销外包网络推广
  • 企业展示型网站有哪些c盘优化大师
  • 广告公司企业介绍宁波seo网站
  • 深圳网站建设分期付网站seo排名优化