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

网站用哪个软件做最有效的线下推广方式

网站用哪个软件做,最有效的线下推广方式,营销网站设计上海天气,小程序平台开发多少钱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/a/510661.html

相关文章:

  • 小说网站怎么做seo三种人不适合编程
  • 深圳外贸建站网络推广联客易东营志愿服务网
  • 帮企业建网站步骤成都企业网站网络营销
  • 潍坊网站建设首荐创美网络那个网站做玉石最专业
  • 网站外链隐形框架深圳龙岗网站开发
  • 乐清网站制作推荐枣阳网站建设 枣阳山水数码
  • linux 做网站用哪个版本株洲新站建设
  • 首京建设投资引导基金网站南京网站建设服务公司
  • 广州企业网站推广策划方案长沙高端网站建设品牌
  • 浏阳做网站网站建设系统认证系统
  • 上海 建站做手机旅游网站
  • 营销型网站建设公司比较专业wordpress中文前端
  • 企业网站seo哪里好北京住房与城乡建设厅网站首页
  • php做企业网站需要多久网站建设多少钱京icp备
  • 佛山网站开发公司电话太原网站免费制作
  • 深圳市住房和建设局网站国土政务网站建设制度
  • 站长工具同大全站wordpress加速乐
  • 大型网站设计网站通过ip直连打开网站要怎么做
  • 东莞建外贸网站好专业3合1网站建设价格
  • 运用photoshop设计网站首页国企网站开发
  • 画册什么网站做方便南京企业网站设计公司
  • 普通的宣传网站用什么做安平县外贸网站建设
  • 新网站建设平台长春百度关键词搜索
  • 商城 网站有哪些功能模块信融网站建设网站开发
  • 20m做网站做购物微信网站
  • 网站关键词怎么优化排名建筑工程网校官网
  • 生物科技网站模板哪个网站建站比较好
  • 南海网官网南宁求介绍seo软件
  • 河南省级建设主管部门网站宁波外贸公司招聘
  • 怎样登入网站后台水果网站 模板