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

国内做五金加工的订单网站小程序搭建教程

国内做五金加工的订单网站,小程序搭建教程,有限责任公司名称,湖北网站建设推荐题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 : 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,…

题目

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
请添加图片描述

示例 :

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图。
在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 

思路:

从题目中我们可以知道:只有凹陷的地方才可以存储雨水,那么高度一定是先减后增,所以当我们遍历到这个位置时,前面减的地方(即凹陷的地方)一定会存储雨水,这时我们将凹陷处出栈就可以计算它能存储的雨水量了。
因此我们需要设计一个单调递减栈:维护一个单调栈,单调栈存储的是下标,满足从栈底到栈顶的下表对应的数组height中的元素递减。栈顶的元素就是凹槽的最低点
此外单调栈还有一个需要注意的地方:弹出栈顶后判断栈是否为空,因为当栈为空时,说明左边不存在最大值,无法存储雨水。

Code:

class Solution {
public:int trap(vector<int>& height) {if(height.size() <= 1){return 0;}stack<int>st;int sum=0;st.push(0);for(int i=1 ; i < height.size() ; i++){while(!st.empty() && height[i] > height[st.top()]){int vis = st.top();st.pop();//其实不需要特判栈顶元素一直相等(即凹槽最低处高度相同)的情况//因为每次计算雨水的高度都是计算的//min(凹槽的左侧高度,当前非递减点的高度) 减去 凹槽的高度//因此当凹槽连续的高度相同时只有凹槽最左侧的才会计算出有效值其余都是0if(!st.empty()){int l = i - st.top() -1;int h = min(height[i] , height[st.top()]) - height[vis];sum += l*h;}}st.push(i);}return sum;}
};
http://www.yidumall.com/news/85697.html

相关文章:

  • 学编程哪个培训机构好哈尔滨网络优化推广公司
  • 北京网站建设网站开发网站免费进入窗口软件有哪些
  • 成都免费建网站百度站长工具seo
  • 网站设计分类新闻稿撰写
  • 网站电线电话图怎么做国内新闻最新消息十条
  • 南京网站建设公司上海aso
  • 窦各庄网站建设电商关键词查询工具
  • 智慧团建网站网址网站关键词怎么优化排名
  • 重庆移动网站建设网站seo视频
  • 做网站制作的公司外贸网站建设优化推广
  • 图书馆网站建设seo网络营销推广排名
  • ps做的网站模板优化搜索点击次数的方法
  • PHP网站开发都需要学什么免费测试seo
  • 北京网站建设建站5118数据分析平台官网
  • 深圳市营销型网站建设seo优化关键词排名
  • 网站建设注册小程序广点通
  • 同一个空间可以做两个网站么怎样把个人介绍放到百度
  • 北京做环评备案的网站代做网页设计平台
  • 福田网站建设公司哪家性价比高百度联系方式人工客服
  • 哈尔滨企业网站制作搜索引擎优化的目的是
  • 域名解析其他网站关键词推广营销
  • 保险网站建设方案百度网络营销中心官网
  • 简单网页布局的html代码手机优化软件下载
  • 珠海动态网站制作推广中国疾控卫生应急服装
  • 深圳网站设计公司哪家工艺好网络营销计划包括哪七个步骤
  • 网站导航类型运营网站是什么意思
  • 河北做网站电话疫情最新消息今天公布
  • 三站合一网站建设怎么看百度指数
  • 提供建设服务的网络公司宁波seo在线优化
  • it前端是做网站的国外服务器免费ip地址