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

代随(138):单调栈:一维接雨水

题干:

代码:

class Solution {
public:
    int trap(vector<int>& height) {
        //if(height.size() <= 2) return 0;
        stack<int>st;
        st.push(0);
        int sum = 0;

        for(int i = 1; i < height.size(); i++)
        {
            if(height[i] < height[st.top()])
            {
                st.push(i);
            }
            else if(height[i] == height[st.top()])
            {
                st.pop();
                st.push(i);
            }
            else{
                while(!st.empty() && height[i] > height[st.top()])
                {
                    int mid = st.top();
                    st.pop();
                    if(!st.empty()){
                    int h = min(height[i], height[st.top()]) - height[mid];
                    int w = i - st.top() - 1;
                    sum += h * w;
                    }
                }
            }
            st.push(i);
        }
        return sum;
    }
};

要点:三个判断中遇到高于栈顶的就开始大段代码while非空+if非空了


http://www.kler.cn/a/527104.html

相关文章:

  • 基于Django的Boss直聘IT岗位可视化分析系统的设计与实现
  • JSR303校验教学
  • 信号处理以及队列
  • 芯片AI深度实战:进阶篇之vim内verilog实时自定义检视
  • Java实现.env文件读取敏感数据
  • Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年
  • 如何将IP切换到海外:详细指南
  • WebSocket使用及优化(心跳机制与断线重连)_websocket timeout
  • IT运维的365天--025 H3C交换机用NTP同步正确的时间
  • PyDeequ库在AWS EMR启动集群中数据质量检查功能的配置方法和实现代码
  • FreeRTOS学习 --- 列表和列表项
  • 数据结构初探:链表之双向链表篇
  • C#面试常考随笔7:什么是匿名⽅法?还有Lambda表达式?
  • Python之如何在Visual Studio Code 中写的python程序打包成可以在Windows系统下运行的.exe程序
  • Vue 3.0打造响应式用户界面的新方式
  • 智慧园区平台系统在数字化转型中的作用与应用前景探究
  • T-SQL语言的区块链
  • 仿真设计|基于51单片机的贪吃蛇游戏
  • 【医学影像 AI】生成式 AI 基础模型 MINIM(2)研究方法
  • 【C++】类和对象(5)
  • 前端学习:Axios Http请求库入门与实战应用
  • Java中初步使用websocket(springBoot版本)
  • stm32教程:EXTI外部中断应用
  • 青少年编程与数学 02-008 Pyhon语言编程基础 08课题、变量与赋值
  • 本地部署DeepSeek
  • 什么是共模电压