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

wordpress 用js晨阳seo服务

wordpress 用js,晨阳seo服务,wordpress4.9.8汉化,深圳网站建设公司收费标准目录 问题描述 解法思路:动态规划 核心思想 步骤解析 代码实现 复杂度分析 示例解析 画图解析 较矮的墙的高度大于当前列的墙的高度 较矮的墙的高度小于当前列的墙的高度 较矮的墙的高度等于当前列的墙的高度。 总结 问题描述 给定一个非负整数数组 hei…

目录

问题描述

解法思路:动态规划

核心思想

步骤解析

代码实现

复杂度分析

示例解析

画图解析

较矮的墙的高度大于当前列的墙的高度

较矮的墙的高度小于当前列的墙的高度

较矮的墙的高度等于当前列的墙的高度。

总结


问题描述

给定一个非负整数数组 height,每个元素表示柱子的高度。假设这些柱子排列紧密,计算下雨后这些柱子之间能接多少雨水。例如,输入 [0,1,0,2,1,0,1,3,2,1,2,1],输出为 6。

解法思路:动态规划

核心思想

每个位置能接的雨水量取决于其左右两边最高墙中的较矮者。若较矮的墙高于当前柱子,则积水量为两者之差;否则无法积水。

步骤解析

  1. 预处理左右最高墙

    • left[i]:记录位置 i 左边的最高墙(不包含 i)。

    • right[i]:记录位置 i 右边的最高墙(不包含 i)。

  2. 计算积水量:遍历每个位置,取左右最高墙中的较小值,减去当前高度,累加到结果中。

代码实现

/*** @param {number[]} height* @return {number}*/
var trap = function (height) {let n = height.length;let left = new Array(n).fill(0); // 左边最高的墙let right = new Array(n).fill(0); // 右边最高的墙for (let i = 1; i < n; i++) {// 从左到右遍历,记录每个位置左边最高的墙left[i] = Math.max(left[i - 1], height[i - 1]);}for (let i = n - 2; i >= 0; i--) {// 从右到左遍历,记录每个位置右边最高的墙right[i] = Math.max(right[i + 1], height[i + 1]);}console.log(left, right);let ans = 0;for (let i = 0; i < n; i++) {// 遍历每个位置,计算每个位置能接的水let level = Math.min(left[i], right[i]);//只有较小的一段大于当前列的高度才会有水,其他情况不会有水if (level > height[i]) {// 接水 = 较矮的一边减去当前位置的高度ans += level - height[i];}}return ans;
};console.log(trap([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]));

复杂度分析

  • 时间复杂度:O(n),三次遍历数组。

  • 空间复杂度:O(n),存储左右最高墙的数组。

示例解析

以输入 [0,1,0,2,1,0,1,3,2,1,2,1] 为例:

  1. 预处理左右数组

    • left = [0,0,1,1,2,2,2,2,3,3,3,3]

    • right = [3,3,3,3,3,3,3,2,2,2,1,0]

  2. 计算积水量

    • 对于位置 i=2left[2]=1right[2]=3,较矮者为1。当前高度为0,积水1。

    • 其他位置类似,累加后总积水量为6。

画图解析


求每一列的水,我们只需要关注当前列,以及左边最高的墙,右边最高的墙就够了。

装水的多少,当然根据木桶效应,我们只需要看左边最高的墙和右边最高的墙中较矮的一个就够了。

所以,根据较矮的那个墙和当前列的墙的高度可以分为三种情况。

较矮的墙的高度大于当前列的墙的高度

把正在求的列左边最高的墙和右边最高的墙确定后,然后为了方便理解,我们把无关的墙去掉。

 

这样就很清楚了,现在想象一下,往两边最高的墙之间注水。正在求的列会有多少水?

很明显,较矮的一边,也就是左边的墙的高度,减去当前列的高度就可以了,也就是 2 - 1 = 1,可以存一个单位的水。

较矮的墙的高度小于当前列的墙的高度

同样的,我们把其他无关的列去掉。

 

想象下,往两边最高的墙之间注水。正在求的列会有多少水?

正在求的列不会有水,因为它大于了两边较矮的墙。

较矮的墙的高度等于当前列的墙的高度。

和上一种情况是一样的,不会有水。

明白了这三种情况,程序就很好写了,遍历每一列,然后分别求出这一列两边最高的墙。找出较矮的一端,和当前列的高度比较,结果就是上边的三种情况。

总结

动态规划解法通过预处理左右最高墙,高效计算每个位置的积水量。该方法思路清晰,时间复杂度低,是解决此类问题的经典方法。


文章转载自:

http://uwRzyWbZ.ndnhf.cn
http://XsWI5qxv.ndnhf.cn
http://CGSTws6C.ndnhf.cn
http://Rgit8ujD.ndnhf.cn
http://VPgafQQo.ndnhf.cn
http://YXItmVpS.ndnhf.cn
http://JnnvzGcA.ndnhf.cn
http://u0fn4ZB9.ndnhf.cn
http://TccwL99S.ndnhf.cn
http://lKgMhWau.ndnhf.cn
http://SOUff08u.ndnhf.cn
http://2VoudZL6.ndnhf.cn
http://BMaIpzDu.ndnhf.cn
http://Aks0iUx2.ndnhf.cn
http://HAut2e4D.ndnhf.cn
http://41hPqPKq.ndnhf.cn
http://02Mn2Dbg.ndnhf.cn
http://FE1y2pw1.ndnhf.cn
http://yv1Mppg0.ndnhf.cn
http://u5MRZQ4K.ndnhf.cn
http://6jzBNleZ.ndnhf.cn
http://KBjdaaki.ndnhf.cn
http://2gEHq2FJ.ndnhf.cn
http://Jdoqipmg.ndnhf.cn
http://2E8jqEnR.ndnhf.cn
http://mxLYDbuN.ndnhf.cn
http://P2fxEfnF.ndnhf.cn
http://kW3q7Iwb.ndnhf.cn
http://twYyq2tH.ndnhf.cn
http://tWzVp8TG.ndnhf.cn
http://www.dtcms.com/wzjs/702908.html

相关文章:

  • 如何介绍设计的网站模板下载地址WordPress能做门户网吗
  • 江西东乡网站建设网站建设金手指专业
  • 购物网站建设名字wordpress 大数据插件
  • 优秀网站建设评选活动海报网络推广的定义
  • 网站免费正能量软件下载视频wordpress文章显示宽度
  • 揭东建设局网站免费网站服务器租用
  • 上海做公益活动有哪些好的网站南皮做网站的
  • 珠海网站建设公司网站建设合同技术开发合同范本
  • 网站做的文字乱码wordpress 菜单位置
  • 著名的个人网站去除wordpress评论电子邮件
  • 网站建设维护合同做网站时候编代码
  • 中贸网做的网站外贸代运营
  • 建c2c网站重庆网站页设计制作
  • 网站为什么被挂马wordpress插件中心
  • 网站落地页制作企业网站管理源码
  • 锡山建设局网站网上做兼职网站
  • 做境外碎片化旅游的网站门户类型的网站
  • 济南网站建设与优化投资公司注册条件及经营范围
  • 免费做封面网站网站制作包括什么
  • 东莞建站模板代理如何在大学网站做宣传
  • 企业网站建设平台福建网站建设模板
  • 网站建设与管理实训课程广州专业网站建设
  • 佛山外贸网站建设价位办公室装修效果图片大全
  • 网站开发可以当程序员湖南企业名录大全
  • 西城网站建设公司旅游网站建设模版
  • 名片在哪个网站做网站网址怎么写
  • 青岛城市建设投资建设集团网站谷歌可以绑定wordpress
  • 企业门户网站 php网页制作与设计教材
  • 跨境电商平台网站建设广州微信上的微网站在哪里
  • 正规手表回收网站东营网站设计