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_maxi=max⁡(height0,height1,...,heighti)pre\_maxi=max⁡(height0,height1,...,heighti)pre_maxi=max⁡(height0,height1,...,heighti)
  • suf_max[i]:表示从当前位置 i 到最右边 的最大柱子高度;
    suf_maxi=max⁡(heighti,heighti+1,...,heightn−1)suf\_maxi=max⁡(heighti,heighti+1,...,heightn−1)suf_maxi=max⁡(heighti,heighti+1,...,heightn−1)

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

相关推荐
地平线开发者11 小时前
Horizon 模型多 Batch 配置
算法·自动驾驶
我命由我1234511 小时前
工程中安全帽颜色含义
运维·经验分享·学习·职场和发展·求职招聘·职场发展·学习方法
czhaii11 小时前
GB2312简体中文编码表
单片机·算法
8Qi812 小时前
LeetCode 121 & 122:股票买卖问题(DP 对比题解)✅
算法·leetcode·职场和发展·动态规划
一只齐刘海的猫12 小时前
【Leetcode】 接雨水
java·算法·leetcode
南境十里·墨染春水12 小时前
讲讲移动语义
算法
西凉的悲伤12 小时前
Guava类库——Range连续区间
java·算法·guava
菜菜的顾清寒12 小时前
力扣HOT(100)54多维动态规划-最长公共子序列
算法·leetcode·动态规划
随意起个昵称12 小时前
线性dp-LIS题目3(合唱队形)
算法
小六学编程12 小时前
二分查找详解:从普通二分到左右边界
算法·c/c++