NO42. 接雨水

复制代码


#最近的算法都是考查思维而不是特定算法,值得一试 #按层 class Solution: def trap(self, height: List[int]) -> int: n=len(height) left,right=0,n-1 tmp,high=0,1 while(left<=right): while(left<=right and height[left]<high): left+=1
复制代码
复制代码
#动态规划- 状态转移方程-求每柱的左右侧最大高度
#想法求出每个左右最大高度,再用最小的去减去现在高度因为能接住水的是最短的那条
class Solution:
    def trap(self, height: List[int]) -> int:
        n = len(height)
        max_left = [height[0]] * n
        max_right = [height[-1]] * n
        res = 0
        for i in range(1, n):
            max_left[i] = max(max_left[i - 1], height[i])
            max_right[n - i - 1] = max(max_right[n - i], height[n - i - 1])
        for i in range(n):
            res += min(max_left[i], max_right[i]) - height[i]
        return res 
复制代码
复制代码
# 双指针
        ans = 0
        left, right = 0, len(height) - 1
        leftMax = rightMax = 0
        while left < right:
            leftMax = max(leftMax, height[left])
            rightMax = max(rightMax, height[right])
            if height[left] < height[right]:
                ans += leftMax - height[left]
                left += 1
            else:
                ans += rightMax - height[right]
                right -= 1
        return ans
复制代码

 

logo
 
posted @   是冰美式诶  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示