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;
    }
相关推荐
0 0 0几秒前
CCF-CSP 33-2 相似度计算(jaccard)【C++】考点:STL容器(set/map)
开发语言·c++·算法
每天要多喝水3 分钟前
图论Day38:孤岛基础
算法·深度优先·图论
瓦特what?12 分钟前
波 浪 排 序
c++·算法·排序算法
blackicexs21 分钟前
第六周第日天
数据结构·算法
逆境不可逃21 分钟前
LeetCode 热题 100 之 48.旋转图像
算法·leetcode·职场和发展
Frostnova丶30 分钟前
LeetCode 1022. 从根到叶的二进制数之和
算法·leetcode
不会敲代码134 分钟前
别再背柯里化面试题了,看完这篇你自己也会写
javascript·算法·面试
snowfoootball35 分钟前
优先队列/堆 题目讲解
学习·算法
SamtecChina202336 分钟前
Samtec连接器设计研究 | 载流量:温升为什么重要?
大数据·网络·人工智能·算法·计算机外设
程序员南飞42 分钟前
排序算法举例
java·开发语言·数据结构·python·算法·排序算法