LeetCodeHot100——42.接雨水

题目链接放在这里42. 接雨水 - 力扣(LeetCode)

这道题的意思比较难理解,就是给定一个数组,它的长度可以理解为是一个悬空的平台,每一个下标的值代表他有宽度为1,高度为对应值的一个方块,题目就是要我们求这些方块中能接多少雨水;

这道题我们可以这样来看,一个位置能接多少水是由其左侧的最高值和右侧的最高值中的最小值减去这个位置箱子的高度来得出来的所以我们自然就想到了前缀和和后缀和,先获取每个位置的前缀最大值和后缀最大值,这样就能求每个位置的水深了;

java 复制代码
class Solution {
    public int trap(int[] height) {
        if(height==null||height.length==0){
            return 0;
        }
//前缀最大值数组
        int[] preMax = new int[height.length];
//后缀最大值数组
        int[] postMax = new int[height.length];
        preMax[0] = 0;
        postMax[postMax.length-1] = 0;
//初始化两个数组
        for(int i = 1;i<preMax.length;i++){
            preMax[i] = Math.max(preMax[i-1],height[i-1]);
        }
        for(int i = postMax.length-2;i>=0;i--){
            postMax[i] = Math.max(postMax[i+1],height[i+1]);
        }
//主遍历计算节接水的多少
        int res = 0;
        for(int i = 0;i<height.length;i++){
            int curArea = Math.min(preMax[i],postMax[i])-height[i];
            if(curArea<=0){
                continue;
            }
            res+=curArea;
        }
        return res;
    }
}
相关推荐
江畔柳前堤13 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Forever Nore14 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考16 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX17 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面17 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号17 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽18 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI18 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
地平线开发者19 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者19 小时前
【征程6】校准量化中HistogramObserver解析
算法