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

力扣75——单调栈

总结leetcode75中的单调栈算法题解题思路。
上一篇:力扣75——区间集合

力扣75——单调栈

  • 1 每日温度
  • 2 股票价格跨度
  • 1 - 2 解题总结

1 每日温度

题目:

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中
answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都
不会升高,请在该位置用 0 来代替。

题解:
单调栈。
进出栈策略:for循环遍历,对于当前的气温,先跟栈顶比较,如果大于栈顶,则计算栈顶与当前的天数间隔,并出栈,然后继续比较直到不大于,最后将当前气温的日期进栈

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n = temperatures.size();vector<int> ans(n);stack<int> s;for (int i = 0; i < n; ++i) {while (!s.empty() && temperatures[i] > temperatures[s.top()]) {int previousIndex = s.top();ans[previousIndex] = i - previousIndex;s.pop();}s.push(i);}return ans;}
};

2 股票价格跨度

题目:

设计一个算法收集某些股票的每日报价,并返回该股票当日价格的 跨度 。当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始
往回数,包括今天)。例如,如果未来 7 天股票的价格是 [100,80,60,70,60,75,85],那么股票跨度将是
[1,1,1,2,1,4,6] 。实现 StockSpanner 类:StockSpanner() 初始化类对象。
int next(int price) 给出今天的股价 price ,返回该股票当日价格的跨度。

题解:
单调栈。
进出栈策略:先把一个非常大的数压入栈中,然后for循环遍历。对于当天的股价,先跟栈顶比较,如果大于等雨栈顶,则计算栈顶与当前的天数间隔,并出栈,然后继续比较直到小于最后将当前股价及其日期进栈

class StockSpanner {
public:StockSpanner() {this->stk.emplace(-1, INT_MAX);this->idx = -1;}int next(int price) {idx++;while (price >= stk.top().second) {stk.pop();}int ret = idx - stk.top().first;stk.emplace(idx, price);return ret;}private:stack<pair<int, int>> stk; int idx;
};

1 - 2 解题总结

问题特点1:每个数据都有时间戳、数据间有大小差异。
问题特点2:向后查找,对于某个时间节点的数据,查找其与之后的第几个数据满足某个比较条件;向前查找,对于某个时间节点的数据,查找其与之前的第几个数据满足某个比较条件。
向后查找:由于遍历时,还未知道后面的数据,所以当前数据只是用来计算前面的数据的结果,然后它再进栈。
向前查找:由于遍历时,已经知道当前的数据,所以当前数据是可以得到结果的,至于当前数据是否需要进栈,则需要根据题目具体要求进行判断。

相关文章:

力扣75——单调栈

总结leetcode75中的单调栈算法题解题思路。 上一篇&#xff1a;力扣75——区间集合 力扣75——单调栈 1 每日温度2 股票价格跨度1 - 2 解题总结 1 每日温度 题目&#xff1a; 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &…...

Webpack和Parcel详解

构建工具和打包器是在开发过程中帮助组织、优化和打包项目的工具。它们可以处理依赖管理、资源优化、代码转换等任务&#xff0c;从而使开发流程更高效。以下是关于构建工具和打包器的一些指导&#xff1a; **Webpack&#xff1a;** Webpack 是一个功能强大的模块打包器&#…...

linux系统服务学习(六)FTP服务学习

文章目录 FTP、NFS、SAMBA系统服务一、FTP服务概述1、FTP服务介绍2、FTP服务的客户端工具3、FTP的两种运行模式&#xff08;了解&#xff09;☆ 主动模式☆ 被动模式 4、搭建FTP服务&#xff08;重要&#xff09;5、FTP的配置文件详解&#xff08;重要&#xff09; 二、FTP任务…...

7.原 型

7.1原型 【例如】 另外- this指向&#xff1a; 构造函数和原型对象中的this都指向实例化的对象 7.2 constructor属性 每个原型对象里面都有个constructor属性( constructor构造函数) 作用&#xff1a;该属性指向该原型对象的构造函数 使用场景: 如果有多个对象的方法&#…...

【图像分类】理论篇(2)经典卷积神经网络 Lenet~Resenet

目录 1、卷积运算 2、经典卷积神经网络 2.1 Lenet 网络构架 代码实现 2.2 Alexnet 网络构架 代码实现 2.3 VGG VGG16网络构架 代码实现 2.4 ResNet ResNet50网络构架 代码实现 1、卷积运算 在二维卷积运算中&#xff0c;卷积窗口从输入张量的左上角开始&#xff…...

C++系列-内存模型

内存模型 内存模型四个区代码区全局区栈区堆区内存开辟和释放在堆区开辟数组 内存模型四个区 不同区域存放的数据生命周期是不同的&#xff0c;更为灵活。 代码区&#xff1a;存放函数体的二进制代码&#xff0c;操作系统管理。全局区&#xff1a;存放全局变量&#xff0c;常…...

[管理与领导-30]:IT基层管理者 - 人的管理 - 向上管理,管理好你的上司,职业发展事半功倍。什么样的上司不值得跟随?

目录 前言&#xff1a; 一、什么是向上管理 二、为什么要向上管理 三、如何进行向上管理 四、向上管理的注意事项 五、向上管理的忌讳 六、向上管理常犯的错 七、如何帮助上司解决他关心的问题 7.1 如何帮助上司解决他关心的问题 7.2 如何帮助上司降低压力 八、什么…...

Java进阶篇--迭代器模式

目录 同步迭代器&#xff08;Synchronous Iterator&#xff09;&#xff1a; Iterator 接口 常用方法&#xff1a; 注意&#xff1a; 扩展小知识: 异步迭代器&#xff08;Asynchronous Iterator&#xff09;&#xff1a; 常用的方法 注意&#xff1a; 总结&#xff1a…...

【CAM】CAM(Class Activation Mapping)——可视化CNN的特征定位

文章目录 一、CAM(Class Activation Mapping)二、CAM技术实现2.1 网络修改2.2 微调2.2 特征提取 三、总结Reference 完整代码见Github &#xff1a;https://github.com/capsule2077/CAM-Visualization &#xff0c;如果有用可以点个Star&#xff0c;谢谢&#xff01; 一、CAM(C…...

Maven教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Maven 是一款基于 Java 平台的项目管理和整合工具&#xff0c;它将项目的开发和管理过程抽象成一个项目对象模型&#xff08;POM&#xff09;。开发人员只需要做一些简单的配置&#xff0c;Maven 就可以自动完成项目的编译、测试、打包、发布以及部署等工作。Maven 是…...

Gof23设计模式之模板方法模式

1.定义 定义一个操作中的算法骨架&#xff0c;而将算法的一些步骤延迟到子类中&#xff0c;使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 2.结构 模板方法&#xff08;Template Method&#xff09;模式包含以下主要角色&#xff1a; 抽象类&#xff0…...

springBoot 配置文件 spring.resources.add-mappings 参数的作用

在Spring Boot应用中&#xff0c;spring.resources.add-mappings参数用于控制是否将特定路径的资源文件添加到URL路径映射中。 默认情况下&#xff0c;该参数的值为true&#xff0c;即会自动将静态资源&#xff08;例如CSS、JavaScript、图片等&#xff09;的URL路径添加到Spr…...

《Java极简设计模式》第03章:工厂方法模式(FactoryMethod)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 源码地址&#xff1a;https://github.com/binghe001/java-simple-design-patterns/tree/master/j…...

C++11并发与多线程笔记(11) std::atomic续谈、std::async深入谈

C11并发与多线程笔记&#xff08;11&#xff09; std::atomic续谈、std::async深入谈 1、std::atomic续谈2、std::async深入理解2.1 std::async参数详述2.2 std::async和std::thread()区别&#xff1a;2.3 async不确定性问题的解决 1、std::atomic续谈 #include <iostream&…...

React快速入门

最近需要学到react&#xff0c;这里进行一个快速的入门&#xff0c;参考react官网 1.创建和嵌套组件 react的组件封装是个思想&#xff0c;我这里快速演示代码&#xff0c;自己本身也不太熟悉。 代码的路径是src底下的App.js function MyButton() {return (<button>I…...

windows权限维持—SSPHOOKDSRMSIDhistorySkeletonKey

windows权限维持—SSP&HOOK&DSRM&SIDhistory&SkeletonKey 1. 权限维持介绍1.1. 其他 2. 基于验证DLL加载—SPP2.1. 操作演示—临时生效2.1.1. 执行命令2.1.2. 切换用户 2.2. 操作演示—永久生效2.2.1. 上传文件2.2.2. 执行命令2.2.3. 重启生效 2.3. 总结 3. 基…...

CSS 两栏布局和三栏布局的实现

文章目录 一、两栏布局的实现1. floatmargin2. flaotBFC3. 定位margin4. flex 布局5. grid布局 二、三栏布局的实现1. float margin2. float BFC3. 定位 margin(或者定位BFC)4. flex布局5. 圣杯布局6. 双飞翼布局 一、两栏布局的实现 两栏布局其实就是左侧定宽&#xff0c;…...

消息中间件相关面试题

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱发博客的嗯哼&#xff0c;爱好Java的小菜鸟 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;社区论坛&#xff1a;希望大家能加入社区共同进步…...

成集云 | 电子签署集成腾讯云企业网盘 | 解决方案

源系统成集云目标系统 方案介绍 电子签署是通过电子方式完成合同、文件或其他文件的签署过程。相较于传统的纸质签署&#xff0c;电子签署具有更高效、更便捷、更安全的优势。 在电子签署过程中&#xff0c;使用电子签名技术来验证签署者的身份并确保签署文件的完整性。电子…...

提升大数据技能,不再颓废!这6家学习网站是你的利器!

随着国家数字化转型&#xff0c;大数据领域对人才的需求越来越多。大数据主要研究计算机科学和大数据处理技术等相关的知识和技能&#xff0c;从大数据应用的三个主要层面&#xff08;即数据管理、系统开发、海量数据分析与挖掘&#xff09;出发&#xff0c;对实际问题进行分析…...

别再只盯着7805了!聊聊LDO选型时那些容易被忽略的关键参数(附实测对比)

LDO选型实战指南&#xff1a;超越7805的五大高阶参数解析 在电子设计领域&#xff0c;低压差线性稳压器(LDO)如同电路系统中的"毛细血管"&#xff0c;负责将能量精准输送到每个功能模块。当大多数工程师还在使用上世纪设计的7805时&#xff0c;现代LDO芯片早已进化出…...

35 岁前端被优化?我用 AI 转型全栈的完整路径

上周&#xff0c;我 35 岁的前端朋友老张被 HR 叫进会议室&#xff0c;聊了 20 分钟&#xff0c;拿了 N1 走人。 他的技术栈没问题&#xff0c;Vue3TS 都会&#xff0c;项目经验也够。问题在于&#xff1a;他做的所有工作&#xff0c;一个应届生 AI 工具都能搞定。这不是危言耸…...

VBA Collection vs Dictionary:如何根据项目需求选择最佳数据容器?

VBA Collection与Dictionary深度对比&#xff1a;如何为项目选择最优数据容器&#xff1f; 在VBA开发中&#xff0c;数据容器的选择往往决定了代码的执行效率和可维护性。Collection和Dictionary作为两种最常用的数据结构&#xff0c;各自拥有独特的优势和应用场景。本文将深入…...

抖音无水印视频批量获取高效解决方案:从技术原理到场景落地

抖音无水印视频批量获取高效解决方案&#xff1a;从技术原理到场景落地 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容管理领域&#xff0c;高效获取抖音视频一直是内容创作者、研究者和企业运营…...

AI小剧场:OpenClaw+nanobot镜像多角色对话生成

AI小剧场&#xff1a;OpenClawnanobot镜像多角色对话生成 1. 为什么需要AI辅助剧本创作 作为一个业余编剧爱好者&#xff0c;我经常遇到创作瓶颈——当需要构建多角色对话场景时&#xff0c;很难同时兼顾不同角色的立场连贯性和语言风格差异。传统写作工具只能提供单向输出&a…...

Qwen3-4B写作大师优化技巧:3个提示词方法让AI输出质量翻倍

Qwen3-4B写作大师优化技巧&#xff1a;3个提示词方法让AI输出质量翻倍 1. 为什么提示词对Qwen3-4B如此重要 Qwen3-4B-Instruct不是普通的文本生成模型&#xff0c;而是一个具备深度推理能力的AI写作伙伴。与基础模型不同&#xff0c;它经过专门的指令微调&#xff08;Instruc…...

FxSound驱动开发详解:从Version11到Version14的完整演进历程

FxSound驱动开发详解&#xff1a;从Version11到Version14的完整演进历程 【免费下载链接】fxsound-app FxSound application and DSP source code 项目地址: https://gitcode.com/gh_mirrors/fx/fxsound-app FxSound驱动开发是音频增强技术的核心&#xff0c;从Version1…...

AI图像放大神器Upscayl:告别模糊时代的终极解决方案

AI图像放大神器Upscayl&#xff1a;告别模糊时代的终极解决方案 【免费下载链接】upscayl &#x1f199; Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy. 项目地址: https://gitcode.com/GitHub_Trendi…...

Rust Desk自建服务器全攻略:从零搭建比向日葵更快的远程桌面(附密钥配置避坑指南)

Rust Desk私有化部署实战&#xff1a;构建高性能远程桌面的完整指南 远程协作工具已成为现代办公的标配&#xff0c;但主流商业方案往往存在延迟高、隐私风险等问题。Rust Desk作为开源解决方案&#xff0c;不仅提供媲美商业软件的功能体验&#xff0c;更通过私有化部署实现完全…...

言语主旨题和细节判断题

由于气温上升、降雨改变和极端气候事件&#xff0c;热带森林正频繁遭受干旱。气候压力对亚马孙雨林尤为明显&#xff0c;反复发生的干旱事件增加了树木的死亡率。根据《自然》杂志发表的一项研究&#xff0c;亚马孙森林树木对干旱的耐受取决于不同物种&#xff0c;这影响到它们…...