leetcode (top100)接雨水

题目:

题解:

可以把每个宽度看作一个桶,每个桶能接的水等于这个桶左右两个方向最高桶的最小高度再减去这个桶本身的高度。把每个桶能接的水相加即可。

难点在于如何快速找到当前桶的左右两个方向的最高桶的高度,可以先遍历一遍数组找出前缀最大值,和后缀最大值,前位置左右最高桶的高度就为当前位置的前缀最大值和后缀最大值。

cpp 复制代码
int trap(vector<int>& height) {
        int arr[height.size()];
        int brr[height.size()];
        for(int i=0;i<height.size();i++){
            if(!i){
                arr[i]=height[i];
            }else{
                arr[i]=max(arr[i-1],height[i]);
            }
        }
        for(int i=height.size()-1;i>=0;i--){
            if(i==height.size()-1){
                brr[i]=height[i];
            }else{
                brr[i]=max(height[i],brr[i+1]);
            }
        }
        int ans=0;
        for(int i=0;i<height.size();i++){
            ans+=min(arr[i],brr[i])-height[i];
        }
        return ans;
    }
相关推荐
203号居民13 小时前
LeetCode hot 100 — 25. K 个一组翻转链表
算法·leetcode·链表
ocean210313 小时前
2025-2026年AI算法与模型研发面试高频知识点洞察
人工智能·算法·面试
Nil20813 小时前
leetcode 78子集
数据结构·算法·leetcode
en.en..14 小时前
Linux fork() 工作原理
数据结构·算法
地平线开发者15 小时前
bevformer算法模型详细解读
算法
liliangcsdn15 小时前
ICIR权重矩阵如何加权标准化为综合因子
算法
SDWAN_Cheap16 小时前
SD-WAN智能选路技术的算法与实现机制
算法·php·sdwan
artificiali16 小时前
拼好卷 05
职场和发展
不会就选b16 小时前
数据结构之树&&二叉树(二)
数据结构·算法
渡之17 小时前
ArduPilot (APM)滤波器之SlewLimiter 深度解析
算法