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

漳州那里有做网站南通网站建设有限公司

漳州那里有做网站,南通网站建设有限公司,查企业信息的软件,seo网络优化教程给定一个数组,代表柱子的高度 求出下雨之后,能接的水有多少单位。我们将每一个柱子想象成一个水桶,看他能接多少水 以这个水桶为例,他所能接的水取决于左边的柱子的最大高度和右边柱子的最大高度,因为只有柱子高的时候…

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

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

        以这个水桶为例,他所能接的水取决于左边的柱子的最大高度和右边柱子的最大高度,因为只有柱子高的时候水才不会流出去,就比如红色的水桶他能接的水 = 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/801673.html

相关文章:

  • wordpress chmod() 函数苏州企业网站优化
  • 安全生产门户网站建设方案做静态网站软件
  • 网站首页页面设计模板互联网推广销售是做什么的
  • 网站收录入口是什么苏州网页制作公司哪家好
  • 国外做调灵风暴的网站沈阳网络科技有限公司
  • 做营利网站的风险黄骅市旅游景点有哪些
  • 锐狐 网站 后台自适应网站设计
  • 商业网站制作价格网络卡哪个公司的好
  • 网站建设 赚钱吗做网站购买模板
  • 装修网站cms微信客户端官网
  • 运用django做网站初期网站开发费会计分录
  • 事务所网站制作方案网站建设定义
  • 网页代码大全详解抖音seo排名系统公司
  • 重庆网站营销哪个网站找做软件下载
  • 网站PC关键词怎么做开发公司物业移交物业协议
  • 重庆网站建设公司是什么网站多页面布局
  • 建设银行的网站是多少兰州网站
  • 如何查网站注册信息企业信息管理系统平台官网
  • 湖南省建设信息网站查询软文代写自助发稿平台
  • 网站建设与维护 目录最好的网站设
  • 龙岗网站seo58同城泰安
  • 网站app客户端制作长春建筑网站
  • 如何自己做软件网站网站建设软文模板
  • 李杰老师网站建设优秀的网站建设公司排名
  • 丹阳做网站的公司做图的网站
  • 在线装修设计师咨询江苏seo哪家好
  • 微网站如何做推广如何建设cpa影视网站
  • 无休网站建设益阳网站建设广告
  • 企业网站建设专业性体现在怎么样上传网站资料
  • 单位网站开发费用进什么科目安卓优化大师历史版本