力扣热门100题之接雨水

一句话总结

双指针 从两端往中间走,利用短板效应 (哪边矮,哪边就能存水),一遍遍历算出总共能接多少雨水。

边界条件(非常重要):

java 复制代码
if (height == null || height.length <= 2) {
    return 0;
}
  • 如果数组为空,或者柱子 ≤ 2 根
  • 根本存不住水,直接返回 0
  • 比如:[2,3] 中间没有凹槽,存不了水

接雨水靠的是 "短板"!比如:左边最高 2,右边最高 3 → 只能按 2 来存水。所以:哪边柱子更矮,哪边就是短板,就计算哪边的存水量!

完整代码实现:

java 复制代码
class Solution {
    public int trap(int[] height) {
        //柱子长度小于2无法接雨水
        if(height == null || height.length <= 2){
            return 0;
        }

        int left = 0;  //左指针
        int right = height.length - 1; //右指针
        int maxLeft = 0;  //左边最高柱子
        int maxRight = 0; //右边最高柱子
        int totalWater = 0; //总接水量

        while(left < right){
            if(height[left] < height[right]){
                if(height[left] >= maxLeft){
                    maxLeft = height[left];
                }else{
                    totalWater += maxLeft - height[left];
                }
                left++;
            }else{
                if(height[right] >= maxRight){
                    maxRight = height[right];
                }else{
                    totalWater += maxRight - height[right];
                }
                right--;
            }
        }

        return totalWater;
    }
}
相关推荐
陈王卜15 分钟前
Reduce 算子优化笔记
算法
wabs66622 分钟前
关于图论【最短路径之Bellman_ford 算法(判断负权回路)|卡码网95.城市间货物运输II的思考】
数据结构·算法·图论·bellman_ford算法·卡码网·判断负权回路
YouonlyliveonceC37 分钟前
《大话数据结构》第4章实战:中缀表达式转后缀 + 后缀表达式求值(完整可运行实现)
算法
phoenix@Capricornus1 小时前
从统计决策到贝叶斯估计
人工智能·算法·机器学习
AICDragon1 小时前
1.8%就够了:K3的896个MoE专家,为什么激活率这么低反而是好事?
人工智能·算法
VALENIAN瓦伦尼安教学设备1 小时前
ASHOOTER激光对中仪如何通过颜色确定调整是否合适
数据库·嵌入式硬件·算法
货拉拉技术1 小时前
重塑 Agent 度量衡:基于 LLM-as-a-Judge 的离线评估体系与实践
算法·设计模式
车压1 小时前
从“为什么”理解注意力机制
算法
wabs6662 小时前
关于哈希表【力扣15.三数之和的思考】
数据结构·算法·leetcode·散列表·哈希表·三数之和
退休倒计时2 小时前
【每日一题】LeetCode 88. 合并两个有序数组 TypeScript
算法·leetcode·职场和发展·typescript