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

Coding Caprice - monotonic stack2

42. 接雨水

class Solution {
public:int trap(vector<int>& height) {stack<int> sh;int out = 0;for(int i=0; i<height.size(); ++i){while(!sh.empty() && height[sh.top()]<height[i]){int bo = height[sh.top()];sh.pop();if(sh.empty()){break;}int ht = min(height[sh.top()], height[i]);out += (ht - bo) * (i-sh.top()-1);}sh.push(i);}return out;}
};

84. 柱状图中最大的矩形

class Solution {
public:int largestRectangleArea(vector<int>& heights) {stack<int> st;int num = heights.size();vector<int> rr(num, num);for(int i=0; i<num; ++i){while(!st.empty() && heights[i]<heights[st.top()]){rr[st.top()] = i;st.pop();}st.push(i);}while(!st.empty()){st.pop();}vector<int> ll(num, -1);for(int i=num-1; i>=0; --i){while(!st.empty() && heights[i]<heights[st.top()]){ll[st.top()] = i;st.pop();}st.push(i);}int out = 0;for(int i=0; i<num; ++i){out = max(out, heights[i] * (rr[i] - ll[i] - 1));}return out;}
};
  • 单调栈是找出右/左边第一个比自己低/高的值或者id
http://www.lryc.cn/news/505929.html

相关文章:

  • Spring Mvc面试题(常见)
  • opencv # Sobel算子、Laplacian算子、Canny边缘检测、findContours、drawContours绘制轮廓、外接矩形
  • Neo4j插入数据逐级提升速度4倍又4倍
  • C++特殊类设计(单例模式等)
  • J8学习打卡笔记
  • 前端学习-操作元素内容(二十二)
  • 【踩坑】pip离线+在线在虚拟环境中安装指定版本cudnn攻略
  • golang操作sqlite3加速本地结构化数据查询
  • vllm加速(以Qwen2.5-7B-instruction为例)与流式响应
  • WordPress弹窗公告插件-ts小陈
  • 【ELK】容器化部署Elasticsearch1.14.3集群【亲测可用】
  • [SAP ABAP] ALV状态栏GUI STATUS的快速创建
  • 【Linux】NET9运行时移植到低版本GLIBC的Linux纯内核板卡上
  • 深入浅出支持向量机(SVM)
  • Vue脚手架相关记录
  • 基于Docker的Minio分布式集群实践
  • Scala 的迭代器
  • vue实现文件流形式的导出下载
  • 【DIY飞控板PX4移植】深入理解NuttX下PX4串口配置:ttyS设备编号与USARTUART对应关系解析
  • 【报错解决】vsvars32.bat 不是内部或外部命令,也不是可运行的程序或批处理文件
  • CTFshow-文件上传(Web151-170)
  • 深度学习基础--将yolov5的backbone模块用于目标识别会出现怎么效果呢??
  • 操作系统(16)I/O软件
  • leetcode437.路径总和III
  • WebGPU、WebGL 和 OpenGL/Vulkan对比分析
  • 不可重入锁与死锁
  • XXE-Lab靶场漏洞复现
  • 从Windows到Linux:跨平台数据库备份与还原
  • upload-labs
  • 【西门子PLC.博途】——面向对象编程及输入输出映射FC块