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

leetcode 901. 股票价格跨度

题目如下
在这里插入图片描述
数据范围
在这里插入图片描述
示例
在这里插入图片描述

本题意思就是从当前数开始向前数有几个连续小于或等于自己的数。
观察到next最多被调用10000次,那么理论上使用n方复杂度的算法暴力枚举也是可以的。
但是这样的重复计算太多如果操作不当还是很容易超时的。就拿示例一来说85>75暴力法还是要比较75前60 70 60所以如何减少重复计算呢?
显然我们要找小于等于自己数的数量那反过来不就是寻找左边第一个大于自己的数吗?
所以这里我们可以借助单调栈仅通过一次遍历来快速寻找左边第一个大于自己的。

通过代码

class dat {
public:
    dat(int a,int b) {
        d = a;
        i = b;//记录索引
    }
    int d;
    int i;

};
class StockSpanner {
public:
    stack<dat> stack;
    int count = 0;
    StockSpanner() {
        stack.emplace(1000000,-1);
    }

    int next(int price) {
      while(stack.top().d <= price) {
          stack.pop();
      }
      int i = stack.top().i;  
      stack.emplace(price,count++);
      return count - 1 - i; 
    }
};
/**
 * Your StockSpanner object will be instantiated and called as such:
 * StockSpanner* obj = new StockSpanner();
 * int param_1 = obj->next(price);
 */

在这里插入图片描述


http://www.kler.cn/a/532719.html

相关文章:

  • 解释 Java 中的垃圾回收机制,以及如何优化垃圾回收性能?
  • 使用VCS对Verilog/System Verilog进行单步调试的步骤
  • 【实践案例】基于大语言模型的海龟汤游戏
  • [mmdetection]fast-rcnn模型训练自己的数据集的详细教程
  • 神经网络参数量和运算量的计算- 基于deepspeed库和thop库函数
  • Python3 + Qt5:实现AJAX异步更新UI
  • 【玩转 Postman 接口测试与开发2_016】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(上)
  • 【25考研】南开软件考研复试复习重点!
  • redis实现延迟任务
  • 结构体排序 C++ 蓝桥杯
  • C++引用练习题
  • 基于springboot的电影评论网站(源码+数据库+文档)
  • PVE纵览-实现极致性能:在Proxmox VE中配置硬盘直通
  • Office / WPS 公式、Mathtype 公式输入花体字、空心字
  • 【C# 】图像资源的使用
  • 结合 vim-plug 安装并使用 Gruvbox 主题教程
  • 使用Posix共享内存区实现进程间通信
  • 二维数组 C++ 蓝桥杯
  • vue生命周期及其作用
  • 基于机器学习的布伦特原油价格的分析与研究
  • 通向AGI之路:人工通用智能的技术演进与人类未来
  • 数据库索引:秋招面试中的经典高频题目 [特殊字符](索引原理/操作/优缺点/B+树)
  • module_init宏是什么?
  • web-XSS-CTFHub
  • python学opencv|读取图像(五十六)使用cv2.GaussianBlur()函数实现图像像素高斯滤波处理
  • 线程创建与管理 - 创建线程、线程同步(C++)