leetcode42.接雨水
作者:互联网
leetcode42.接雨水
题目
给定 n
个非负整数表示每个宽度为 1
的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
用例
输入: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 个单位的雨水(蓝色部分表示雨水)。
输入:height = [4,2,0,3,2,5]
输出:9
求解
/**
* @param {number[]} height
* @return {number}
*/
var trap = function(height) {
let len = height.length;
let min = 0;
let water = 0;
let left = 0;
let right = len-1;
while(left<right){
//先判断左右指针哪个最小
if(height[left]<height[right]){
//是否大于已经计算过的雨量高度
if(height[left]>min){
//计算雨量
for(let i = left+1;i<right;i++){
//去掉已经计算过一部分雨量的部分
if(height[i]<min){
water = water+(height[left]-min)
}else if(height[i]<height[left]){
water = water+(height[left]-height[i])
}
}
//更换新min
min = height[left]
}
left++
}else{
if(height[right]>min){
for(let i = left+1;i<right;i++){
if(height[i]<min){
water = water+(height[right]-min)
}else if(height[i]<height[right]){
water = water+(height[right]-height[i])
}
}
min = height[right]
}
right--
}
}
return water
};
标签:number,雨水,height,let,len,leetcode42,left 来源: https://www.cnblogs.com/boniii/p/15512893.html