接雨水
- 这是一道leetcode上的算法题,比较有意思
- 我的算法思路是这样的
- 找到最大值的位置,然后从两边开始遍历
function getWater(arr){
var imax = getMax(arr)
var left = 0,right = arr.length-1
var i = left,j = right
var lefwater = 0,rightwater = 0
while(i<imax){
i++
if(arr[left] <= arr[i]){
left = i
}else{
lefwater += arr[left] - arr[i]
}
}
while(j>imax){
j--
if(arr[right] <= arr[j]){
right = j
}else{
rightwater += arr[right] - arr[j]
}
}
return lefwater + rightwater
}
function getMax(arr){
var max = arr[0]
var index = 0
for(let i=1,len=arr.length;i<len;i++){
if(max < arr[i]){
max = arr[i]
index = i
}
}
return index
}