java Leetcode - 诱捕雨水收集雨水

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Leetcode - 诱捕雨水收集雨水相关的知识,希望对你有一定的参考价值。

public int trap(int[] height){
    int res = 0,mx = 0,n = height.length();
    int[] dp = new int[height.length]{0};
    for(int i = 0; i < height.length; i++){
        dp[i]=mx;
        mx = max(mx,height[i]);  //从左往右遍历得到i位置左边最大的高度
    }
    mx = 0;
    for(int i = height.length-1; i >=0; i--){
        dp[i]= min(dp[i],mx);  //从右往左遍历得到i位置右边最大的高度,并取左边最大高度和右边最大高度较小值
        mx=  max(mx,height[i]);//更新右边最大的高度
        id(dp[i]>height[i]) res += dp[i]-height[i];//res累加的是每一个bar上面会存多少水
    }
    return res;
}

以上是关于java Leetcode - 诱捕雨水收集雨水的主要内容,如果未能解决你的问题,请参考以下文章

java 42.诱捕雨水(#)。java

java 42.诱捕雨水(#)。java

java 42.诱捕雨水(#)。java

java 42.诱捕雨水(#)。java

java 42.诱捕雨水(#)。java

leetcode python 042收集雨水