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

42.单调栈2

接雨水

class Solution {
public:
    int trap(vector<int>& height) {
        stack<int> st;
        int res=0;
        for(int i=0;i<height.size();i++){
            int prev=i;
            int count=0;
            while(!st.empty()&&height[st.top()]<height[i]){
                int tmp=st.top();
                st.pop();
                if(!st.empty()){
                    int len=tmp-st.top();
                    count+=len;
                    res+=len*(height[i]-height[tmp]);
                }
                prev=tmp;
            }
            if(st.empty()){
                res-=(height[i]-height[prev])*count;
            }
            st.push(i);
            
        }
        return res;
        
    }
};

最大矩形面积

class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        int res=0;
        stack<int> st;
        
        heights.push_back(-1);
        for(int i=0;i<heights.size();i++){
            while(!st.empty()&&heights[st.top()]>=heights[i]){
                int tmp=st.top();
                st.pop();
                if(!st.empty()){
                    res=max(res,(i-1-st.top())*heights[tmp]);
                }else{
                    res=max(res,i*heights[tmp]);
                }
            }
            st.push(i);
        }
        return res;
    }
};
http://www.dtcms.com/a/73634.html

相关文章:

  • 3月17日星期一今日早报简报微语报早读
  • 华为OD机试 - 书籍叠放 - 逻辑分析(Java 2023 B卷 200分)
  • 【操作系统安全】任务3:Linux 网络安全实战命令手册
  • JAVA(8)-数组
  • Python虚拟环境完全指南:用venv管理项目依赖,避免环境冲突的N个技巧
  • Matlab 汽车二自由度转弯模型
  • VLLM:虚拟大型语言模型(Virtual Large Language Model)
  • 决策树(DT算法)
  • MongoDB 可观测性最佳实践
  • 从Excel到搭贝的转变过程
  • 【Agent】OpenManus-Flow-BaseFlow详细分析
  • 解决qt中自定插件加载失败,不显示问题。
  • 2-信息安全概述
  • maven依赖包重复查找处理方法
  • hive通过元数据库查询分区和非分区的数据量及存储占用
  • DeepSeek 是否被过度吹捧了?
  • ssh公钥认证失败问题
  • [论文笔记]在复杂环境中使用基于注意力机制的深度确定性策略梯度进行路径规划
  • 【python】http post 在body中传递json数据 以发送
  • HDC 和 HiLog 命令详细介绍
  • 【数据结构】如何解决二叉树在遍历查找前驱与后继的问题?线索二叉树来帮您……
  • 使用Appium的W3C Actions实现多指触控行为
  • 基于Flask的东方财富网股票数据可视化分析系统
  • Qt窗口控件之字体对话框QFontDialog
  • 计算机基础:二进制基础13,十六进制与二进制的相互转换
  • vue3+Ts+elementPlus二次封装Table分页表格,表格内展示图片、switch开关、支持
  • 一个数的约数之和与约数个数
  • 第二:go 链接mysql 数据库
  • docker可视化之dpanel
  • 什么是强化学习?