力扣42接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

python 复制代码
class Solution(object):
    def trap(self, height):
        # 初始化双指针
        left = 0
        right = len(height) - 1
        # 初始化左边和右边的最大高度
        left_max = right_max = 0
        res = 0
        while left < right:
            if height[left] < height[right]:
                # 左边更小,水量由左边决定
                if height[left] >= left_max:
                    # 更新左边的最大高度
                    left_max = height[left]
                else:
                    res += left_max - height[left]
                left += 1
            else:
                # 右边更小,水量由右边决定
                if height[right] >= right_max:
                    # 更新右边的最大高度
                    right_max = height[right]
                else:
                    res += right_max - height[right]
                right -= 1
        return res 

需要明确怎么才能存不住水:取决于哪边的水高更小,水量就由哪边决定。

那如何计算水量就需要通过最大高度-当前的水高,如果当前水高更高,就需要更新最大高度。

相关推荐
2401_894915536 小时前
GEO 优化源码全解析:从搜索引擎到 AI 引擎的底层改写逻辑
java·服务器·前端·数据库·人工智能·分布式·搜索引擎
1000世界小札8 小时前
《大话数据结构》第9章精读:归并排序与快速排序完整 C++ 实现
数据结构·c++·算法
2601_9561219710 小时前
背包基础篇(01、完全、分组、多重、混合)
c++·算法·动态规划
兴通物联科技11 小时前
SMT PCB 微小 DataMatrix 码扫不动问题分析 兴通 XT8601B 600 万像素工业读码器落地实践
大数据·人工智能·单片机·嵌入式硬件·算法·计算机视觉
Profile排查笔记12 小时前
指纹浏览器哪个好?从 Profile、代理、权限和自动化能力判断是否适合
前端·人工智能·后端·自动化
lzhdim12 小时前
12、JavaScript常见的内存泄露问题 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
denggun1234512 小时前
yield
前端·数据库·python
前端snow12 小时前
ai agent -- prompt汇总
前端
muddjsv14 小时前
前端性能优化实战:从加载到渲染的全面提速指南
前端·性能优化