【力扣每日一题】2023.10.7 股票价格跨度

news2024/11/24 17:21:26

目录

题目:

示例:

分析:

代码:


题目:

示例:

分析:

给我们一个数组表示不同时间的股票的价格,要我们按照顺序返回每天的股票价格跨度,价格跨度就是股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。

实际上就是要我们找出数组中每个元素的上一个更大元素。

这类题目我们使用单调栈来解决,我们使单调栈内的元素(股票价格)保持单调递减,每次我们将新一天的股票价格塞进单调栈之前,我们都把价格小于新价格的元素从栈中弹出,直到栈顶元素大于新价格,那么当天的价格跨度就等于从今天到栈顶元素那天的时间差。

在塞入第一天的价格信息时,栈内是空的,我们很容易对空栈进行操作,所以我们可以在一开始塞入一个哨兵节点,也就是一个无穷大的值,这样在比较价格的时候就不可能将这个节点从栈中弹出了。

因为我们还需要记录不同价格所在的时间,所以存入栈的元素需要存放两个数,一个是价格,一个是时间,可以用vector,也可以用pair。

代码:

class StockSpanner {
public:
    int index=0;
    stack<pair<int,int>>s;              //元素类型为pair的栈,键为股票价格,值为日期
    StockSpanner() {
        s.push(make_pair(INT_MAX,0));   //加入哨兵节点(防止操作空栈)
    }   
    
    int next(int price) {
        ++index;
        while(price>=((s.top()).first)){    //保持栈内单调 
            s.pop();
        }
        int res=index-(s.top()).second;     //跨度等于两个下标之差
        s.push(make_pair(price,index));     //存入该节点
        return res;
    }
};

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

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

相关文章

如何批量获取京东商品详情数据,京东商品详情API接口

批量获取京东商品详情数据可以通过京东开放平台接口来实现。 首先&#xff0c;您需要在京东开放平台注册成为开发者并创建一个应用&#xff0c;获取到所需的App Key和App Secret等信息。然后&#xff0c;使用获取到的App Key和App Secret进行签名和认证&#xff0c;获取Access…

前后端分离计算机毕设项目之基于SpringBoot的旅游网站的设计与实现《内含源码+文档+部署教程》

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

基于SSM+Vue的订餐系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

每日一题 2034. 股票价格波动(中等,有序队列)

思路&#xff1a; 对于最高和最低价格&#xff0c;维护一个有序的存储所有价格的队列即可实现当执行 update 时&#xff0c;将队列中原来的 price 删除&#xff08;如果有的话&#xff0c;且耗时O(logn)&#xff09;&#xff0c;然后再插入新的 price 并保持有序&#xff08;耗…

Elasticsearch:语义搜索快速入门

这个交互式 jupyter notebook 将使用官方 Elasticsearch Python 客户端向你介绍 Elasticsearch 的一些基本操作。 你将使用 Sentence Transformers 进行文本嵌入的语义搜索。 了解如何将传统的基于文本的搜索与语义搜索集成&#xff0c;形成混合搜索系统。在本示例中&#xff0…

漏刻有时数据可视化大屏(15)智慧党建大数据平台

智慧党建大数据平台是依托现代信息技术和“互联网党建”的大数据管理模式&#xff0c;建立的综合党建平台。该平台集组织管理、党务中心、学习考评、宣传阵地、统计分析、党建助手、我的工作台等主要功能于一体&#xff0c;实现了基层党建工作数据化、在线化、可视化。以下是智…

使用弹性盒子flex对html进行布局和动态计算视口高度

使用弹性盒子flex对html进行布局的一个练习 height: calc(100vh - 4px); # vh表示视口高度的百分比&#xff0c;所以100vh表示整个视口的高度。 .mytxt { text-indent: 2em; /* 首航缩进2字符 */ line-height: 2; /* 2倍行高 */ padding: 8px; /* 内容与边框的距离 */ } …

MQ - 37 云原生:MQ的分层存储架构的实现方案

文章目录 导图概述什么是分层存储分层存储的应用和局限实现分层存储的技术思考选择远程文件系统生产性能优化消费性能优化方案一方案二隔离性和回滚隔离性回滚业界主流消息队列的架构分析RocektMQ 多级存储的实现分析Kakfa 分层存储的实现分析为什么 RocketMQ 使用准实时的方式…

Transformer预测 | Pytorch实现基于Transformer 的锂电池寿命预测(CALCE数据集)

文章目录 效果一览文章概述模型描述程序设计参考资料效果一览 文章概述 Pytorch实现基于Transformer 的锂电池寿命预测,环境为pytorch 1.8.0,pandas 0.24.2 随着充放电次数的增加,锂电池的性能逐渐下降。电池的性能可以用容量来表示,故寿命预测 (RUL) 可以定义如下: SOH(t…

【银河麒麟V10】【服务器】Oracle11g部署

一、环境准备 操作系统版本&#xff1a;银河麒麟V10 SP1 0518 Server x86_64 二、基础环境准备 1、安装麒麟操作系统 注意&#xff1a;预留至少7G以上swap缓存 2、关闭selinux和firewalld 3、如果是内网环境需要挂载本地源 【银河麒麟V10】【服务器】搭建本地镜像源_桂安俊…

【Linux】Vim使用总结

【Linux】Vim使用总结 Vim 的三种模式命令行模式1. 移动2.复制&#xff0c;粘贴&#xff0c;剪切3.撤销4.大小写切换&#xff0c;替换&#xff0c;删除 插入模式底行模式 Vim 的三种模式 一进入VIM就是处于一般模式&#xff08;命令模式&#xff09;&#xff0c;该模式下只能输…

java BigInteger的基本使用

BigInteger 注意对象一旦创建,内部记录的值不能发生改变 import java.math.BigInteger; import java.util.Random;public class myBigInteger {public static void main(String[] args) {//获取一个随机的大整数BigInteger bigIntegernew BigInteger(4,new Random());System.ou…

3dmax怎样渲染全景图?3dmax渲染全景图的2种方法

3dmax怎样渲染全景图&#xff1f;今天介绍3dmax渲染全景图的3种方法 3dmax渲染全景图方法1 在 360 度渲染时&#xff0c;您必须采取的第一步是放置摄像机。 定位相机&#xff1a;选择您要使用的相机类型。 无论您希望使用哪种类型的相机&#xff08;目标相机、物理相机或免费…

漏刻有时数据可视化Echarts组件开发(42)炫酷的pictorialBar象形柱图代码分析

核心代码 var data []; for (let i 0; i < 5; i) {data.push(Math.round(Math.random() * 10)); } var xData2 ["A", "B", "C", "D", "E"]; var data1 [100, 100, 100, 100, 100]; // var data2 [50, 32, 55, 65, …

WPF向Avalonia迁移(三、项目结构)

前提&#xff1a; Avalonia版本11.0.0 1.配置文件 1.1 添加配置文件 1.2 读取配置文件 添加System.Configuration.ConfigurationManager using Avalonia.Controls; using System.Configuration;namespace AvaloniaApplication7.Views {public partial class MainWindow : W…

java实验(头歌)--面向对象封装继承和多态

文章目录 第一题第二题第三题第四题第五题第六题第七题第八题 快速完成实验的方法&#xff1a; 把对应题目的主函数替换&#xff0c;其他复制粘贴。 第一题 public class TestPersonDemo {public static void main(String[] args) {/********* begin *********/// 声明并实例化…

基于双二阶广义积分器的三相锁相环(DSOGI-PLL)Simulink仿真

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

漏刻有时数据可视化Echarts组件开发(41)svg格式地图应用

1.定义SVG文件 var svg ;2.注册地图函数 Echarts.registerMap是Echarts图表库中用于注册地图的函数。它可以将第三方地图或自定义地图数据与Echarts进行集成&#xff0c;使用Echarts的API进行绘制。使用方法如下&#xff1a; echarts.registerMap(mapName, geoJson) 参数map…

vscode Vue代码script全白

原因&#xff1a;template闭合标签有换行 更改为一行之后&#xff0c;成功解决

置换环建笛卡尔树:AT_wtf22Day1B

https://atcoder.jp/contests/wtf22-day1/tasks/wtf22_day1_b?langen 置换环是用值连位 首先肯定要分成每个置换环&#xff0c;每个置换环操作次数只能是 s i z e − 1 size-1 size−1&#xff08;置换环性质&#xff09; 我们考虑置换环任意一次操作&#xff0c;会划分成…