当前位置: 首页 > news >正文

42. 接雨水

leetcode Hot 100系列

文章目录

  • 一、核心操作
  • 二、外层配合操作
  • 三、核心模式代码
  • 总结


一、核心操作

  1. 单调栈,保持栈底到栈顶从高到低
  2. 一旦当前值大于栈顶,则记录中间柱子的下标,再弹出栈顶,一旦栈不为空此时就有了柱子和左右边的柱子
  3. 计算面积,取左右较小值减中间柱子的高度,取右-左-1作为宽度,累加
  4. 当前值入栈

提示:小白个人理解,如有错误敬请谅解!

二、外层配合操作

  1. 外层循环
  2. 内层循环只有栈不为空时再来计算
  3. 内层循环完了再将当前值入栈!!!!!

三、核心模式代码

代码如下:

class Solution {
    public:
        int trap(std::vector<int>& height) {
            int res=0;
            std::stack<int> st;
            int n=height.size();
            for(int i=0;i<n;i++)
            {
                while (!st.empty() && height[i]>height[st.top()])
                {
                    int mid=st.top();
                    st.pop();
                    if(!st.empty())
                    {
                        int h=std::min(height[i],height[st.top()])-height[mid];
                        int w=i-st.top()-1;
                        res+=h*w;
                    }
                }
                st.push(i);
            }
            return res;
        }
    };

总结

  1. 所有值都要入栈!栈不为空时才累加

相关文章:

  • Flutter敏感词过滤实战:基于AC自动机的高效解决方案
  • 二分查找:原理、循环不变量与边界处理
  • 设置网站主题色color-scheme
  • 【Easylive】HttpServletRequest、HttpServletResponse、HttpSession 介绍
  • Leetcode hot 100刷题之路(day 1)
  • 黑盒测试的场景法(能对项目业务进行设计测试点)
  • ngx_monotonic_time
  • Git Fetch 和 Git Pull 的区别
  • 双层板模组天线设计指南,50欧姆阻抗匹配设计
  • B-tree 索引失效 避坑指南
  • x265不同preset级别控制的编码参数与编码性能影响
  • BFS(广度优先搜索)
  • 使用DeepSeek API进行情感分析:超简单
  • c语言怎么处理字符串,与c++的区别
  • CentOS下安装Docker,Docker下安装JDK\MYSQL\REDIS\NGINX
  • 压测数据说话:如何用科学方法选择最优高防套餐?
  • 大数据技术之Scala:特性、应用与生态系统
  • MySQL - 索引原理与优化:深入解析B+Tree与高效查询策略
  • ‌粉笔屑里的星辰大海‌----灌南县第四中学九3班汤洁老师
  • harmony OS NEXT- HTTP 模块笔记
  • 小白如何制作微信小程序/盐城seo优化
  • 漳州建网站/seo推广收费标准
  • 商用自适应网站建设/贵阳seo网站推广
  • 国内有wix做的好的网站/seo免费课程视频
  • 选一个网站做seo/成功的营销案例及分析
  • 国外黄冈网站推广软件免费吗/全网搜索