Leetcode-.42接雨水

动态规划,记录i数组前后缀的最大值

python 复制代码
class Solution:

    def trap(self, height: List[int]) -> int:

        n=len(height)

        pre_max=n*[0]

        pre_max[0]=height[0]

        for i in range(1,n):

            pre_max[i]=max(pre_max[i-1],height[i])

        suf_max=[0]*n

        suf_max[-1]=height[-1]

        for i in range (n-2,-1,-1):

            suf_max[i]=max(suf_max[i+1],height[i])

        ans=0

        for h,pre,suf in zip(height,pre_max,suf_max):

            ans+=min(pre,suf)-h
  
        return ans
  • pre_max[i]:表示从最左边到当前位置 i 为止的最大柱子高度;
    pre_max[i]=max⁡(height[0],height[1],...,height[i])pre\_max[i]=max⁡(height[0],height[1],...,height[i])pre_max[i]=max⁡(height[0],height[1],...,height[i])
  • suf_max[i]:表示从当前位置 i 到最右边 的最大柱子高度;
    suf_max[i]=max⁡(height[i],height[i+1],...,height[n−1])suf\_max[i]=max⁡(height[i],height[i+1],...,height[n−1])suf_max[i]=max⁡(height[i],height[i+1],...,height[n−1])

对于下标 i,下雨后水能到达的最大高度等于下标 i 两边的最大高度的最小值,下标 i 处能接的雨水量等于下标 i 处的水能到达的最大高度减去 height[i]。

相关推荐
hhhh明7 分钟前
【调试Bug】网络在训练中输出NaN
人工智能·算法
dragoooon3437 分钟前
[LeetCode]每日温度
算法·leetcode·职场和发展
Morriser莫42 分钟前
贪心算法Day6学习心得
算法·贪心算法
不愧是你呀1 小时前
Leetcode力扣解题记录--第21题(合并链表)
算法·leetcode·链表
满分观察网友z1 小时前
树的深处,宝藏何在?——我的日志系统重构与层序遍历的奇遇记(513. 找树左下角的值)
算法
满分观察网友z1 小时前
精准狙击:二叉树中的“左叶子”们与我的UI重构之旅(404. 左叶子之和)
算法
孟柯coding2 小时前
常见排序算法
数据结构·算法·排序算法
Point2 小时前
[LeetCode] 最长连续序列
前端·javascript·算法
是阿建吖!2 小时前
【优选算法】链表
数据结构·算法·链表
kev_gogo2 小时前
关于回归决策树CART生成算法中的最优化算法详解
算法·决策树·回归