当前位置: 首页 > 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/408430.html

相关文章:

  • 网站注册的账号怎么注销百度网盘登录入口网页版
  • 做b2b网站有没有用百度爱采购官网
  • 成都网站建设成都网站制作湖南seo优化按天付费
  • 宜昌百度网站建设上海优化网站方法
  • 哪个网站做汽车保养比较好seo 工具分析
  • 移动端网站开发流程图太原seo排名收费
  • 万网 网站建设合同推广链接点击器安卓版
  • 经典网站欣赏、2022黄页全国各行业
  • 衢州百度推广宁波seo优化流程
  • 商务类网站设计苏州网站制作推广
  • 政府网站集约化建设的理解株洲专业seo优化
  • 怎样把网站做的更吸引网络营销网课
  • 怎样自己建一个网站西安seo盐城
  • 建设厅网站更改登陆密码优化设计卷子答案
  • 做股权众筹的网站南昌seo快速排名
  • 做暧暧视频免费视频网站网站搜索排名优化怎么做
  • 泉州网站建设-泉州网站建设公司bt蚂蚁
  • 做淘宝内部优惠券网站要钱么北京百度seo排名点击软件
  • 上海网络网站建设怎么创建网址
  • 做导航网站用什么源码鹤壁网络推广哪家好
  • 网站开发背景2022年大事热点新闻
  • 绯闻seo谷歌seo推广招聘
  • 微网站开发一般费用多少钱北京seo公司网站
  • api网站模板西seo优化排名
  • 企业网站服务器租用五年级上册优化设计答案
  • 都匀市政府网站建设app投放渠道有哪些
  • php 网站 手机版专业seo推广
  • 广东手机网站建设多少钱蚁坊软件舆情监测系统
  • 有什么网站可以做初中试题今日最新重大新闻
  • 想做视频win7优化设置