随想录Day63 | 单调栈 42. 接雨水 84.柱状图中最大的矩形

随想录Day63 | 单调栈 42. 接雨水 84.柱状图中最大的矩形

42. 接雨水

题目链接 42

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

第一次提交

class Solution {
public:
    int trap(vector<int>& height) {
        stack<int> mono;
        mono.push(-1);
        int res = 0;
        for (int i = 0; i < height.size(); i++) {
            if (mono.top() == -1) {
                mono.push(i);
            } else if (height[mono.top()] > height[i]) {
                mono.push(i);
            } else if (height[mono.top()] <= height[i])  {
                int low = height[mono.top()];
                while(mono.top() != -1 && height[mono.top()] <= height[i]) {
                    int high = height[mono.top()];
                    int width = i - mono.top()-1;
                    res += (high - low) * width;
                    low = high;
                    mono.pop();
                } 
                if (mono.top()!=-1){
                int high = height[i];
                int width = i - mono.top()-1;
            res += (high - low) * width;}
                mono.push(i);
            }
            cout << i << " i " << res <<" res "<<endl;
        }
        return res;
    }
};

学习题解

简化讨论情况

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

84.柱状图中最大的矩形

题目链接 84

nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。

给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是 -1 。

返回一个长度为 nums1.length 的数组 ans 作为答案,满足 ans[i] 是如上所述的 下一个更大元素 。

第一次提交

class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        stack<int> mono;
        mono.push(-1);
        int res = 0;
        heights.push_back(-1);
        for (int i = 0; i < heights.size(); i++) {
            if (mono.top() == -1 || heights[i] >= heights[mono.top()]) mono.push(i);
            else {
                //cout << i << " " <<mono.top()<<endl;
                while(mono.top() != -1 && heights[i] < heights[mono.top()]) {
                    int mid = heights[mono.top()];
                    mono.pop();
                    int width = i - mono.top() - 1;
                    res = max(res, width* mid);
                    //cout <<i << " "<< width << " " <<mid << endl;
                }
                mono.push(i);
            }
        }
        return res;
    }
};

学习题解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以在数组头尾加入最小元素来起到在stack加入-1元素同样效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/721733.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Harbor本地仓库搭建002_Harbor负载均衡节点搭建_nginx安装配置_harbor安装---分布式云原生部署架构搭建002

负载均衡的机器. 可以看到上面是安装nginx的过程 首先去编辑一下yum仓库地址,配置一下nginx的仓库地址 然后这个是配置的内容 然后在进行安装之前最好yum makecache fast 更新一下缓存,这样安装的时候 会安装最新的包 然后就可以安装nginx yum -y install nginx 然后去

解锁微信客服的潜力:提升客户满意度与忠诚度

随着全球数字化进程的加速&#xff0c;企业如何有效利用数字化工具提升服务质量和客户满意度&#xff0c;成为了企业国际化、数字化出海的关键。在这一大背景下&#xff0c;微信客服以其卓越的功能和广泛的用户基础&#xff0c;成为了企业数字化转型的重要助力。 一、微信客服…

西班牙的人工智能医生

西班牙的人工智能医生 西班牙已将自己定位为欧洲负责任人工智能领域的领导者。然而&#xff0c;透明度的承诺往往落空&#xff0c;公共监督机构一直难以获得对司法和福利系统中部署的算法的有效访问。这使得西班牙成为一种日益增长的趋势的一部分&#xff0c;即政府悄悄地试验预…

fastapi修改docs文档页面favicon.ico图标

如下图&#xff0c;文档页面默认使用的是tiangolo大神的Logo 如果打开的标签比较多&#xff0c;就不好区分了&#xff0c;想要修改这个logo&#xff0c;可以用fastapi-cdn-host一行代码搞定 fastapi_cdn_host.patch_docs(app, favicon_url/static/logo.png) 例如&#xff1a;…

SSM名城养老院管理系统-计算机毕业设计源码03948

目 录 摘要 1 绪论 1.1选题的意义 1.2研究现状 1.3Vue.js 主要功能 1.4ssm框架介绍 2 1.5论文结构与章节安排 3 2 名城养老院管理系统分析 4 2.1 可行性分析 4 2.2 系统流程分析 4 2.2.1数据增加流程 5 2.3.2数据修改流程 5 2.3.3数据删除流程 5 2.3 系统功能分析 5 2.3.…

YOLOv10改进 | 主干篇 | YOLOv10引入FasterNeT替换Backbone

1. FasterNeT介绍 1.1 摘要: 为了设计快速神经网络,许多工作一直致力于减少浮点运算(FLOP)的数量。 然而,我们观察到,FLOP 的减少并不一定会导致延迟的类似程度的减少。 这主要源于每秒浮点运算 (FLOPS) 效率低下。 为了实现更快的网络,我们重新审视流行的算子,并证明…

字节豆包大模型API吞吐、函数调用能力、长上下文能力测试总结

离开模型能力谈API价格都是耍流氓&#xff0c;豆包大模型作为API最便宜的模型之一&#xff0c;最近向个人开发者开放了&#xff0c;花了300元和一些时间对模型的API吞吐、函数调用能力、长上下文能力等进行了深度测试&#xff0c;看看它的能力究竟适合做 AI 应用开发吗&#xf…

Mysql事务传播机制

都知道事务传播机制有七种&#xff0c;但是都是 面试背的&#xff0c;实际应用中从来没注意过。这次同事写的时候没注意就给我留了个坑。 有这样一个情况&#xff0c;事务A里边嵌套了事务B&#xff0c;在事务的传播机制上&#xff0c;同事写成了PROPAGATION_REQUIRES_NEW&#…

数字化校园:打造未来教育新风尚

在21世纪的教育蓝图中&#xff0c;"数字化校园"正逐渐从愿景走向现实&#xff0c;它不仅是科技进步与教育创新深度融合的产物&#xff0c;更是重塑教育生态、引领未来学习风尚的关键力量。随着云计算、大数据、人工智能等前沿技术的蓬勃发展&#xff0c;传统的教育模…

C#使用轻量级深度学习模型进行车牌颜色识别和车牌号识别

看到这个文章时候请注意这个不涉及到车牌检测&#xff0c;这个仅仅是车牌颜色和车牌号识别&#xff0c;如果想涉及到车牌检测可以参考这个博客&#xff1a;[C#]winform部署yolov7CRNN实现车牌颜色识别车牌号检测识别_c# yolo 车牌识别-CSDN博客 【训练源码】 https://github.…

台球灯控计费系统安装教程,佳易王桌球房计费系统的安装方法教程

台球灯控计费系统安装教程&#xff0c;佳易王桌球房计费系统的安装方法教程 一、软件操作教程 以下软件操作教程以&#xff0c;佳易王台球计时计费管理软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、点击计时开灯&#xff0c;相应的灯…

cad怎么转成pdf文件?方法很简单!

cad怎么转成pdf文件&#xff1f;在数字化时代&#xff0c;CAD图纸的转换与共享已成为日常工作中的常态。无论是建筑设计师、工程师还是学生&#xff0c;都可能遇到需要将CAD文件转换为PDF格式的需求。本文将为您推荐三款高效的CAD转PDF软件&#xff0c;让您轻松实现文件格式的转…

Mask R-CNN

Mask R-CNN 是基于 Faster R-CNN 的改进版本&#xff0c;用于实例分割任务&#xff0c;即在物体检测的基础上进一步为每个目标生成像素级的分割掩码。以下是 Mask R-CNN 的主要改进思路及其关键技术点&#xff1a; 1. 引入分割分支 在 Faster R-CNN 的基础上&#xff0c;Mask…

cms XAMPP搭建帝国cms示例(用于代码审计)

网上大部分都是小皮因为是一键很省事&#xff0c;但本人一直用的xampp所以若有人也是用xampp搭建可以看此篇文章 这里示例为 帝国CMS -v7.5 xampp搭建过程中如果本机存在mysql服务则需要先将mysql服务停止在start xampp的mysql服务 任务管理器----->服务----->找到mys…

这四个有意思的工具,很香

提醒英雄 提醒英雄应用是一款能够帮助用户彻底解决健忘症的应用程序。该应用创建的事项会完全同步到通知中心&#xff0c;并且持续保持在锁屏界面上&#xff0c;只要打开手机&#xff0c;用户就会看到之前设置的提醒事项。这种设计确保了用户在任何时候都能及时收到提醒&#…

软件设计不是CRUD(23):在流式数据处理系统中进行业务抽象落地——详细编码

&#xff08;接上文《软件设计不是CRUD&#xff08;22&#xff09;&#xff1a;在流式数据处理系统中进行业务抽象落地——设计思考》&#xff09; 4、详细设计 项目开发初期&#xff0c;有两种测速雷达和对应的摄像头需要接入&#xff0c;分别是STC500型测速雷达和TTS400型测…

怎么通俗理解概率论中的c r(cramer rao 克拉默拉奥)不等式?

还是推一下比较好记 视频链接 【数理统计学重要定理证明&#xff1a;C-R不等式——无偏估计的方差下界-哔哩哔哩】 https://b23.tv/4gk1AvU 【数理统计学重要定理证明&#xff1a;C-R不等式——无偏估计的方差下界-哔哩哔哩】

C#标志位的使用

C#作为一种功能强大的编程语言&#xff0c;是在.NET框架中广泛使用的语言之一。在实际应用中&#xff0c;C#的标志位在各种系统设计和编程实践中会涉及到。这篇文章将讨论如何使用C#的标志位来跟踪报警声音的播放状态。 报警系统是一种广泛应用的系统&#xff0c;它可以在关键时…

Java网络爬虫入门

文章目录 1、导入依赖2、CrawlerFirst 1、导入依赖 <dependencies><!-- HttpClient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></…

windows解决clion终端中文乱码

windows解决clion终端中文乱码 问题&#xff1a; 解决办法&#xff1a; 添加system("chcp 65001 > nul");