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

seo优化文章网站福建住房和建设网站密码忘记

seo优化文章网站,福建住房和建设网站密码忘记,html5 网站开发 适配,青岛网站建设服务题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3…

题目描述

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

示例 1:

img

输入: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 个单位的雨水(蓝色部分表示雨水)。 

示例 2:

输入:height = [4,2,0,3,2,5]
输出:9

提示:

  • n == height.length
  • 1 <= n <= 2 * 10^4
  • 0 <= height[i] <= 10^5

解题思路:

1.暴力解答:

每个位置处的积水取决于左右两边柱子的最低高度,分别从起始位置遍历到该位置得到左边的最高高度,然后从该位置遍历到末端,得到右边高度的最高值。因此计算每个位置处的积水量:等于该位置左右两边最高高度的最小值-该位置的高度。

代码:

class Solution {public static int trap(int[] height) {int sumVolume = 0;int i=0,len=height.length;for(;i<len;i++){int j=0,leftmax = i;while(j<i){if(height[j]>height[leftmax])leftmax = j;j++;}j=i+1;int rightmax = i;while(j<len){if(height[j]>height[rightmax])rightmax = j;j++;}sumVolume+=Math.min(height[leftmax],height[rightmax])-height[i];}return sumVolume;}
}

结果:
在这里插入图片描述

2.动态规划

上述暴力解法由于每次遍历i时都又遍历了一整遍数组,因此时间复杂度为O(n^2),导致运行时间超时。因此采用动态规划的思想,提前遍历数组,确定好每个位置处的左边最高值和右边最高值。然后再按上述计算积水量方法计算总的积水量即可。
代码:

class Solution {public static int trap(int[] height) {int sumVolume = 0;int i=0,len=height.length;int curMaxHeight = 0;int[] leftMaxheigt = new int[len]; // 存储每个位置左边最高值int[] rightMaxheigt = new int[len]; // 存储每个位置右边最高值for(;i<len;i++){// 从前往后遍历height数组获取每个位置左边最高值if(height[i]>curMaxHeight){curMaxHeight = height[i];}leftMaxheigt[i] = curMaxHeight;}curMaxHeight=0;for(i=len-1;i>=0;i--){// 从后往前遍历height数组获取每个位置右边最高值if(height[i]>curMaxHeight){curMaxHeight = height[i];}rightMaxheigt[i] = curMaxHeight;}for(i=0;i<len;i++){sumVolume+=Math.min(leftMaxheigt[i],rightMaxheigt[i])-height[i];}return sumVolume;}
}

结果:
在这里插入图片描述

3.双指针

在动态规划的基础上,不使用两个数组存储每个位置的左边最大高度和右边最大高度,而是一开始定义两个指针i,j,一开始分别指向数组第一个元素和数组最后一个元素,同时定义一个左边最高高度变量leftMax=0和一个右边最高高度变量rightMax=0。通过比较两个位置的高度,移动较矮的一方,当

class Solution {public static int trap(int[] height) {int i=0,j=height.length-1;int leftMax=0,rightMax=0;int sumVolume=0;while(i<j){if(height[i]<height[j]){if(height[i]<leftMax){sumVolume += leftMax-height[i];}else{leftMax=height[i];}i++;}else{if(height[j]<rightMax){sumVolume += rightMax-height[j];}else{rightMax=height[j];}j--;}}return sumVolume;}
}

结果:
在这里插入图片描述

http://www.yayakq.cn/news/13245/

相关文章:

  • 哪个网站做视频赚钱做笔记的网站
  • 网站建设首页该放什么软件网站如何建设与安全管理制度
  • 网站制作建设兴田德做健身类小程序的网站
  • 山东网站制作推荐云平台网站建设方案书
  • 杭州自助建站模板下载网站制作困难
  • 高端定制网站建设制作wordpress 归档 文章分类
  • 用百度云服务器做网站长春做网站优化的公司
  • 做网站开发要具备哪些素质信息网络设计
  • 抖音小程序推广视频如何制作 seo won
  • 网站用哪些系统做的好处要怎么判断网站是什么cms做的
  • 百事通网做网站北京建网站公司飞沐
  • 下关网站建设网站页面布局的目的
  • 网站建设的说明济宁网站建设是什么意思
  • 在线免费源码资源源码站建设书法网站的主题是
  • 做外贸的阿里巴巴网站是哪个wordpress 手机首页
  • 地方网站怎样做安徽制作网站
  • 快速网站建设费用wordpress 知呼
  • 网站建设pdf上海正规网站建设耗材
  • 网站404 模板做网站每天任务及实训过程
  • 毛绒玩具东莞网站建设学做旗袍衣服的网站
  • 做网站开发需要学哪些东西服务好的网站建设公司
  • ps制作网站首页面教程做本地网站需要的软件
  • 建设专业网站价格雄安做网站优化的公司
  • 做网站卖东西送上门做购物商城类网站需要
  • wordpress免费网页建站泰安建设工程信息网
  • 营销型网站应必备的七大功能大型网站建设济南兴田德润o团队怎么样
  • 网站开发计划时间九江市建设工程质量监督站网站
  • 网站首页模板免费下载医药网站建设
  • 建设一个棋牌网站都得准备什么山东东营市有几个区县
  • 河北网站备案流程用织梦做领券网站