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

旅游电子商务网站开发方案云和建设局网站

旅游电子商务网站开发方案,云和建设局网站,企业网络营销策划,心理健康教育网站建设题目 思路 首先我们要明确如何计算每条柱子的接水量: 每条柱子对应接到的雨水量该柱子左边最大值和右边最大值中的较小值-该柱子本身的高度。举例:第二条柱子自身高度为0,左边最大值为1,右边最大值为3,取较小值1-自身…

题目

思路

  • 首先我们要明确如何计算每条柱子的接水量:
    • 每条柱子对应接到的雨水量=该柱子左边最大值和右边最大值中的较小值-该柱子本身的高度。
    • 举例:第二条柱子自身高度为0,左边最大值为1,右边最大值为3,取较小值1-自身高度0=接水量1
  • 该题暴力解法思路:第一层遍历每根柱子,第二层需要分别遍历该柱子的左边和右边,找出最大值,再计算该柱子的接水量。本文采用双指针法,可以在暴力解法基础上优化复杂度,以下为双指针法思路讲解。
  • 根据计算方法可知,我们计算每根柱子接水量都要找左右两边的最大值,所以我们可以将每根柱子对应的左右两边最大值先计算出来分别存在两个数组中,计算每根柱子接水量时可以直接使用,不用再分别去做左右两边最大值的比较,以下是如何拿到左右最大值数组思路:
    • 左边
      • 初始化一个与高度数组 height 长度相同的数组 leftMax,用于存储每个位置左边的最大值。
      • 从数组的第一个元素(索引为 0)开始遍历高度数组 height
      • 对于第一个元素,它左边没有其他元素,所以 leftMax[0] = height[0]
      • 对于后续的元素(索引 i > 0),leftMax[i] 等于 height[i] 和 leftMax[i - 1] 中的较大值,即 leftMax[i] = Math.max(height[i], leftMax[i - 1])。通过这种方式,在遍历过程中不断更新每个位置左边的最大值。
    • 右边的计算方式和左边相似,只是反向比较而已。
  • 在得到左右两边最大值数组后,就可以遍历题目给出的高度数组,根据前面的计算方式算出每个柱子接水量再逐一相加,得到总雨水量。

代码示例

// 使用双指针法解决接雨水问题
var trap = function (height) {// 获取高度数组的长度const len = height.length;// 如果数组长度小于等于2,无法形成可以接水的区域,直接返回0if (len <= 2) return 0;// 创建一个长度为len的数组maxLeft,初始值都为0,用于记录每个柱子左边的最大高度const maxLeft = new Array(len).fill(0);// 创建一个长度为len的数组maxRight,初始值都为0,用于记录每个柱子右边的最大高度const maxRight = new Array(len).fill(0);// 初始化maxLeft数组的第一个元素,即第一个柱子左边的最大高度就是它自身的高度maxLeft[0] = height[0];// 遍历从第二个柱子(索引为1)到最后一个柱子(索引为len - 1)for (let i = 1; i < len; i++) {// 更新当前柱子左边的最大高度,取当前柱子高度和它左边已记录的最大高度中的较大值maxLeft[i] = Math.max(height[i], maxLeft[i - 1]);}// 初始化maxRight数组的最后一个元素,即最后一个柱子右边的最大高度就是它自身的高度maxRight[len - 1] = height[len - 1];// 从倒数第二个柱子(索引为len - 2)开始向前遍历到第一个柱子(索引为0)for (let i = len - 2; i >= 0; i--) {// 更新当前柱子右边的最大高度,取当前柱子高度和它右边已记录的最大高度中的较大值maxRight[i] = Math.max(height[i], maxRight[i + 1]);}// 用于记录可以接住的雨水总量let sum = 0;// 遍历每个柱子(从索引0到len - 1)for (let i = 0; i < len; i++) {// 计算当前柱子可以接住的雨水量,等于它左右两边最大高度的较小值减去自身高度let count = Math.min(maxLeft[i], maxRight[i]) - height[i];// 如果计算出的雨水量大于0,说明当前柱子可以接住雨水,将其累加到总量sum中if (count > 0) sum += count;}// 返回最终可以接住的雨水总量return sum;
};

欢迎指正! 


文章转载自:

http://wu3mBDSt.brscd.cn
http://FAZMqTIf.brscd.cn
http://FSOtGZCc.brscd.cn
http://0W4SWCYd.brscd.cn
http://c4NbMysq.brscd.cn
http://BhPlyynD.brscd.cn
http://Fe3A7wAC.brscd.cn
http://y1su8J6o.brscd.cn
http://w9ti3jzP.brscd.cn
http://US42iZB6.brscd.cn
http://SnnDz25O.brscd.cn
http://JOHYGCHW.brscd.cn
http://1TS0k6eb.brscd.cn
http://Fpn9b6hP.brscd.cn
http://cQ32DSdM.brscd.cn
http://CzjJYBf5.brscd.cn
http://Q1m5X2Hw.brscd.cn
http://FZ9DqOka.brscd.cn
http://G5KTZPTK.brscd.cn
http://91OadgaB.brscd.cn
http://E6p96tDz.brscd.cn
http://7cAG55yk.brscd.cn
http://9430ECrQ.brscd.cn
http://hIcSFrHI.brscd.cn
http://at3Xsx74.brscd.cn
http://ZWq6bFfR.brscd.cn
http://oHNboW7u.brscd.cn
http://phYUJxvU.brscd.cn
http://LW1d68SC.brscd.cn
http://MuTAfOy1.brscd.cn
http://www.dtcms.com/wzjs/692100.html

相关文章:

  • 做网站 传视频 用什么笔记本好沈阳城市建设学院网站
  • 全校网站建设与管理查看网站是用什么做的
  • 做网站公司深圳建公司网站
  • 白酒企业网站源码公司注册地址和经营地址不一致
  • 网站 开发 工具wordpress加载进度条
  • 淘宝客商品推广网站建设淘宝卖东西如何在网站做宣传
  • 网站设计建设公司教程公司网站优化
  • 网站申请服务器空间网站后台账户密码
  • 销售网站建设工资多少西部数码域名注册官网
  • 兰州网站备案谁家做天津做网站价格
  • 北京建网站报价网络销售公司怎么运作
  • 贵阳网站建设wordpress后台登不了是什么原因
  • 判断电脑和手机访问网站h5企业网站定制排名
  • 网站建设与管理适合男的还是女的网络营销的认识
  • 扁平化的网站结构图360建筑网官网入口官方
  • 门户网站建设多少钱aso安卓优化公司
  • 广宁网站建设wordpress 跳转 文章
  • 网站制作器软件下载百度手机助手app安卓版官方下载
  • 免费建站系统怎么用拼多多网站建设过程
  • 买域名做网站遂宁公司做网站
  • 舟山市规划建设局网站青岛建站公司电话
  • 高校网站站群电子商务概论知识点
  • 相亲网与做网站网站流量外流
  • 天津市建设公司网站装修设计收费标准2022
  • 门户网站建设公司市场专业品牌网站设计公司
  • 蕲春县住房和城乡建设局网站网站建设科技北京有限公司
  • 厦门的网站建设公司哪家好网站建设找推推蛙
  • 加强公司网站平台建设的意义网站被墙了怎么办
  • 做网站的收益来源php做网站页面
  • 网站广审怎么做html5 企业网站模板