Trapping Raining water

这题没能想出来 , 看的题解 , 遍历一遍把水坑用水泥填上 , 计算面积 , 再遍历一遍原来的面积 , 用填了水泥的面积 - 原来的面试 = 答案

iterate origin
    find maxIndex

filled=[]
max=origin[0]
iterate from left to maxIndex
    if origin[i]<max
        filled[i]=max
    else 
        max=arr[i]
        filled[i]=max

max=origin[len-1]
from right to maxIndex
    if origin[i]<max
        filled[i]=max
    else 
        max=arr[i]
        filled[i]=max

sumFilled = sum(filled)
sumOrigin = sum(origin)

res=sumFilled-sumOrigin

return res
func trap(height []int) int {
    if len(height)==0 {
        return 0
    }
    max:=height[0]
    maxIndex:=0
    for k,v:=range height {
        if v>max {
            max=v
            maxIndex=k
        }
    }

    filled:=make([]int,len(height))
    max1:=height[0]

    for i:=0;i<maxIndex;i++ {
        if height[i]<max1 {
            filled[i]=max1
        } else {
            max1=height[i]
            filled[i]=max1
        }
    }

    endIndex:=len(height)-1
    max2:=height[endIndex]
    for j:=endIndex;j>=maxIndex;j-- {
        if height[j]<max2 {
            filled[j]=max2
        } else {
            max2=height[j]
            filled[j]=max2
        }
    }

    sumFilled:=0
    for _,v:=range filled {
        sumFilled+=v
    }

    sumOrigin:=0
    for _,v:=range height {
        sumOrigin+=v
    }

    return sumFilled-sumOrigin

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第339期 〖六项精进〗 反省一组 姓名 姜珊珊 浙江致一网络科技有限公司 【日精进打卡第24天】 【经典名...
    江山_6e15阅读 109评论 0 0
  • 远离那些渣渣。 △00 前阵子我在微博上闲逛,添加了一些新的好友,其中有一些还会发私信跟我聊聊天。 这当中,有一个...
    相聚宝阅读 755评论 9 10
  • 2018,拒绝了解机会,可能意味着堵死自己的财富通道 ! 我已在路上 一个卖棉被的,一个卖包子的 。 ...
    冰莲依梦阅读 256评论 0 0
  • 虽然是周末时光,晚上七点半依然追随中国教育报追光讲堂第53期。 孩子不爱读书?方法用的不对?把“群文阅读”引入课堂...
    bai素心若雪阅读 977评论 2 38
  • 发现孩子的问题(比如吃手指),该不该直接指出?我希望他改正,我又怕过多的制止强化了问题。 我最近发现孩子身上出了很...
    lxy_568f阅读 203评论 0 0