单调栈【基础算法精讲 26】

思想 : 

及时去除无用数据,保证栈中数据有序

739.每日温度

链接 : 

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思路 : 

单调栈,从后往前遍历,栈中记录下一个更大元素的候选项;

代码 : 

从后往前

class Solution {
public:vector<int> dailyTemperatures(vector<int>& t) {int n = t.size();vector<int> ans(n);stack<int> st ; // 存下标for(int i=n-1;i>=0;i--){int tn = t[i];while(!st.empty() && tn >= t[st.top()]){st.pop(); // 将栈顶比它小的数据全删了,因为比它小的数据不可能成为任何一个前面任何一个数的第一大值}if(!st.empty()){ans[i] = st.top() - i ; // 存在比它大的数;}st.push(i); // 将该数压入栈中}return ans ;}
};

从前往后 : 栈中记录还未找到最近较大的数的下标

class Solution {
public:vector<int> dailyTemperatures(vector<int>& t) {int n = t.size();vector<int> ans(n,0);stack<int> st;// 栈中记录还没算出「下一个更大元素」的那些数(的下标)。for(int i=0;i<n;i++){int tn = t[i] ;while(!st.empty() && tn > t[st.top()]){int j = st.top();ans[j] = i - j;st.pop();}st.push(i);}return ans;}
};

42.接雨水

链接 : 

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思路 : 

单调栈 : 找上一个最大的数,在找的过程中填坑

代码 : 

class Solution {
public:int trap(vector<int>& h) {int n = h.size();stack<int> st;int ans = 0;for(int i=0;i<n;i++){int t = h[i] ;while(!st.empty() && t>= h[st.top()]){int bottom_h = h[st.top()];st.pop();if(st.empty()) break;int left = st.top();int dh = min(h[left],t) - bottom_h;//面积的高ans += dh * (i - left - 1); }st.push(i);}return ans;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

邮箱和手机号验证码的发送

一、邮箱验证码 1、随机生成验证码工具类 /*** 随机生成验证码工具类*/ public class ValidateCodeUtils {/*** 随机生成验证码* param length 长度为4位或者6位* return*/public static Integer generateValidateCode(int length){Integer code null;if(length 4){code ne…

【操作系统和计网从入门到深入】(二)进程

前言 这个专栏其实是博主在复习操作系统和计算机网络时候的笔记&#xff0c;所以如果是博主比较熟悉的知识点&#xff0c;博主可能就直接跳过了&#xff0c;但是所有重要的知识点&#xff0c;在这个专栏里面都会提到&#xff01;而且我也一定会保证这个专栏知识点的完整性&…

高通平台开发系列讲解(USB篇)MBIM协议详解

文章目录 一、MBIM协议二、MBIM 消息类型三、基本控制消息构成3.1、MBIM OPEN MSG FORMAT3.2、MBIM CLOSE MSG FORMAT3.3、MBIM_COMMAND_MSG3.4、MBIM_COMMAND_DONE3.5、MBIM_INDICATE_STATUS_MSG四、MBIM Message(UUID+CID)4.1、UUID_BASIC_CONNECT

频率、概率

频率 在相同的条件下进行试验&#xff0c;假设试验进行了次&#xff0c;其中随机事件A发生了次&#xff0c;那么就称为随机事件A发生的频率。 概率 假设随机试验E的样本空间是S&#xff0c;对于其中每个随机事件&#xff0c;都对应了一个实数&#xff0c;把这个实数称为随机…

网络游戏APP备案|游戏

网络游戏APP备案|游戏 网络游戏备案分析需要备案原因&#xff08;个人看法&#xff09;对小公司对大公司 总结 网络游戏备案分析 相信做网络游戏的伙伴们在23年都收到了各个平台的公告&#xff0c;网络游戏需要进行APP的备案。也就是说网路游戏现在安卓平台也不是你想上架测试…

中国降冰片烯行业研究与投资预测报告(2024版)

内容简介&#xff1a; 降冰片烯&#xff08;Norbornene&#xff0c;NB&#xff09;也称降莰烯&#xff08;Norcamphene&#xff09;&#xff0c;是一种桥环烃。降冰片烯是一种常温白色透光的结晶。降冰片烯易升华&#xff0c;沸点96℃&#xff0c;熔点44-46℃&#xff0c;闪点…

酶联免疫抗体试剂——博迈伦生物

酶联免疫抗体试剂是一种广泛应用于生物医学研究领域的实验工具&#xff0c;其在检测、分析和诊断等方面发挥着重要作用。本文将从酶联免疫抗体试剂的基本原理、应用领域、优势特点以及未来发展趋势等方面进行详细阐述。 基本原理 酶联免疫抗体试剂是一种利用酶标记的抗体与特…

a1随笔小思--家书

师夷长技以自强 不应该只学西方的技术&#xff0c;更应该传承我们中华的五千年的先人智慧。 修心养性 藏器于身 子曰:“可与言而不与之言&#xff0c;失人&#xff1b;不可与言而与之言&#xff0c;失言。知者不失人&#xff0c;亦不失言。” 孔子说:“可以跟他交谈&#xf…

051:vue项目webpack打包后查看各个文件大小

第050个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

什么是sql的谓词下推

SQL的谓词下推&#xff08;Predicate Pushdown&#xff09;是一种数据库查询优化技术&#xff0c;它将查询中的过滤条件&#xff08;谓词&#xff09;尽可能地“下推”到查询计划中更早的阶段执行。这意味着&#xff0c;系统尝试在处理和转换数据之前先应用这些过滤条件&#x…

Oracle merge into using on when then 用法

merge into using on when then 是 Oracle 数据库合并数据表的一种操作&#xff0c; MERGE INTO target_table a USING source_table b ON (a.col1 b.col1 and a.col2 b.col2) WHEN MATHED THEN update set a.col3 b.col3 WHEN NOT MATHED THEN insert (a.col1,a.c…

Linux压缩和解压命令

Linux系统中压缩包的后缀有.zip、.gz、.bz2、.xz等&#xff0c;后缀不同表示压缩方式不同。 1.打包命令 tar tar命令用于备份文件的命令&#xff0c;该命令可打包多个文件或目录&#xff0c;也可将被打包的文件与目录从包中还原。 tar 选项 包名 {参数} 包名是指打包的文…

git 分支合并

git 分支合并 比如 20231205 分支合并&#xff0c;到main分支上 1&#xff0c;切换到 main分支上 git checkout main2&#xff0c;进行合并 git merge 202312053&#xff0c;如果您希望在合并时保持提交历史的清晰&#xff0c;您可以使用 rebase 命令&#xff1a; git reba…

javafx-在listview中添加了点击事件后会执行多次

现象 我在一个按钮的点击事件中添加了&#xff0c;点击事件的监听如下&#xff0c;就会造成我多次点击按钮后&#xff0c;里面打开浏览器会执行多次 listviewitemListener new ChangeListener() {Overridepublic void changed(ObservableValue observable, Object oldValue, …

Python基础期末复习 新手

类是创建实例的模板&#xff0c;而实例则是一个一个具体的对象&#xff0c;各个实例拥有的数据都互相独立&#xff0c;互不影响。 实例方法是一个普通的函数&#xff0c;类方法和静态方法都是通过函数装饰器的方式实现的&#xff1b;实例方法需要传入self&#xff0c;类方法需…

git强制回滚,远程强制更新,git pull强制更新

注意&#xff1a;这里是强制回滚&#xff0c;回滚后&#xff0c;之后历史的就没有了&#xff0c;慎用。 本地强制回滚 强制回滚到上一个版本 git reset --hard HEAD^强制回滚上上个版本 git reset --hard HEAD^^git log查看版本 git log --prettyonelinegit log --prettyf…

高通平台开发系列讲解(USB篇)MBIM驱动详解

文章目录 一、数据结构二、源码分析三、adroid_mbim创建四、读写 /dev/adroid_mbim4.1、读gsi_ctrl_dev_read4.2、写gsi_ctrl_dev_write沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文主要介绍高通平台USB网卡MBIM驱动。 一、数据结构 目录:drivers/usb/gadget/…

【cocotb】【达坦科技DatenLord】Cocotb Workshop分享

https://www.bilibili.com/video/BV19e4y1k7EE/?spm_id_from333.337.search-card.all.click&vd_sourcefd0f4be6d0a5aaa0a79d89604df3154a 方便RFM实现 cocotb_test 替代makefile &#xff0c; 类似python 函数执行

java web系统的常见安全问题

一、背景 java开发的系统在发布到互联网后都需要进行安全扫描&#xff0c;本文主要总结开发web系统需要注意的与系统安全相关的问题。因为在做需求开发时&#xff0c;很少产品会将系统安全的因素考虑在内&#xff0c;总觉得实现个需求很简单&#xff0c;就是一些页面&#xff0…

.Net6.0 Microsoft.AspNetCore.Http.Abstractions 2.20 已弃用

您想要升级 Microsoft.AspNetCore.Http.Abstractions 包&#xff0c;您需要注意以下几点&#xff1a; Microsoft.AspNetCore.Http.Abstractions 包在 ASP.NET Core 2.2 版本后已经被标记为过时&#xff0c;因为它已经被包含在 Microsoft.AspNetCore.App 框架引用中12。因此&am…