LeetCode:单调栈

42.接雨水

cpp 复制代码
class Solution {
public:
    int trap(vector<int>& height) {
        int sum = 0;
        for(int i = 0; i < height.size(); i++){
            //第一个柱子和最后一个柱子不接雨水
            if(i == 0 || i == height.size() - 1) continue;

            int left_h = height[i]; //记录左边柱子的最高高度
            int right_h = height[i]; //记录右边柱子的最高高度

            for(int l = i - 1; l >=0; l--){
                if(height[l] > left_h) left_h = height[l];
            }
            for(int r = i + 1; r < height.size(); r++){
                if(height[r] > right_h) right_h = height[r];
            }

					// 【核心】每列的水量是左右最高的柱子高度最小值,减本列柱高度
            int h = min(left_h, right_h) - height[i]; 
            if(h > 0) sum += h;
        }

        return sum;   
    }
};
相关推荐
怕浪猫2 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
朝朝辞暮i3 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J3 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
weixin_307779135 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
朝朝辞暮i5 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
朝朝辞暮i5 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
Godspeed Zhao6 小时前
现代智能雷达技术14——算法(0)
线性代数·算法·雷达
可乐ea6 小时前
Agent 模型分级升级路由:用置信度阈值把贵模型省下来
人工智能·算法·机器学习·结构化输出·置信度路由·模型升级路由·大模型成本优化
Navigator_Z6 小时前
LeetCode //C - 1278. Palindrome Partitioning III
c语言·算法·leetcode
Godspeed Zhao6 小时前
现代智能雷达技术18——算法(4)
算法