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

怎么做免费的网站空间首码项目推广平台

怎么做免费的网站空间,首码项目推广平台,外贸建站新闻资讯,怎样做企业手机网站建设给定一个数组,代表柱子的高度 求出下雨之后,能接的水有多少单位。我们将每一个柱子想象成一个水桶,看他能接多少水 以这个水桶为例,他所能接的水取决于左边的柱子的最大高度和右边柱子的最大高度,因为只有柱子高的时候…

        给定一个数组,代表柱子的高度

        求出下雨之后,能接的水有多少单位。我们将每一个柱子想象成一个水桶,看他能接多少水

        以这个水桶为例,他所能接的水取决于左边的柱子的最大高度和右边柱子的最大高度,因为只有柱子高的时候水才不会流出去,就比如红色的水桶他能接的水 = min(左边柱子最大高度,右边柱子最大高度) - 柱子的高度 = 1

        那么,求出了所有的水桶能接的水,求和就是我们的答案了,那么怎么能知道第i个柱子左右两侧柱子的最大值呢。这里我们需要借助两个数组,pre_max,suf_max,分别表示前缀最大值和后缀最大值,前置最大值等于 = max(pre_max[i-1],height[i]),suf_max同理。

        如下图:

        代码:

class Solution {
public://一个水桶能接的水取决于左边柱子的最大高度和右边柱子的最大高度,因为这样水才不会流出//前后缀分解//第i个宽度为1的桶可以接的水 = min(此处的前缀最大值,此处的后缀最大值) - height[i] int trap(vector<int>& height) {int n = height.size();int pre_max[n],suf_max[n];pre_max[0] = height[0];for (int i = 1;i < n;i++) {pre_max[i] = max(pre_max[i - 1],height[i]);}suf_max[n - 1] = height[n - 1];for (int i = n - 2;i >= 0;i--) {suf_max[i] = max(suf_max[i + 1],height[i]);}int ans = 0;for (int i = 0;i < n;i++) {ans += min(pre_max[i],suf_max[i]) - height[i];}return ans;}
};

时间复杂度:求pre_max和suf_max都是一次遍历,所以时间复杂度是O(n)的

空间复杂度:借助了两个数组,所以是O(n)的

        本题目时间复杂度已经最优了,那空间复杂度是否可以优化呢?注意到,如果我们求出了一个水桶的一部分前缀最大值和后缀最大值,此时前缀最大值小于后缀最大值,此时水桶的接水量就是前缀最大值-height[i],因为水是否会流出取决于较短的木板。这样我们用一个变量即可替代一个数组,将空间复杂度优化到了O(1)。

        具体代码:

class Solution {
public:int trap(vector<int>& height) {int n = height.size();int pre_max = 0,suf_max = 0;int left = 0, right = n - 1;int ans = 0;while (left <= right) {pre_max = max (pre_max,height[left]);suf_max = max (suf_max,height[right]);if (pre_max < suf_max) {ans += pre_max - height[left];left++;}else{ans += suf_max - height[right];right--;}}return ans;}
};

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

相关文章:

  • 南宁网站建设公司seo优化阿里云域名注册网站
  • 西安网站手机网站建设百度文库官网
  • 网站设计制作的公司上海广告公司排名
  • 哈尔滨网站建设网络公司精准信息预测
  • 电脑维修网站模板下载接单平台
  • 郑州公司做网站谷歌收录查询
  • 双语对照网站企业策划
  • 做网站编辑累不累抓关键词的方法10条
  • 苏州手机网站制作关键字参数
  • 上海公共招聘网新版seo厂商
  • 旅游网站模块写软文
  • 怎么做公司招聘网站seo项目
  • 枣庄网站建设费用希爱力双效片的作用与功效
  • 手机p2p网站开发迅雷磁力链bt磁力天堂
  • 使用php做的学校网站长沙网址seo
  • wordpress视屏站网络广告形式
  • 做网站需要用到那些软件手机建站
  • 南通网站群建设免费b站网站推广
  • 绛县苗木网网站是由谁建设的网上引流推广怎么做
  • 有服务器怎么做网站教程郑州新闻发布
  • 海淀石家庄网站建设上海搜索排名优化
  • 做教育培训网站公司app软件下载站seo教程
  • 婚庆行业网站建设方案1全球十大搜索引擎
  • 有什么网站可以做微信支付接推广怎么收费
  • 网站建设氵金手指下拉十三沈阳seo排名优化推广
  • 佛山网站建设公司招聘河南企业网站建设
  • 标准网站建设价格优化防控措施
  • 做本地门户网站热门推广软件
  • 济南疫情防控最新通知北京网站seo招聘
  • 163企业邮箱注册入口关键词首页排名优化平台