【Leetcode】901. Online Stock Span

题目地址:

https://leetcode.com/problems/online-stock-span/description/

构造一个类,这个类每次接受一个整数(范围 [ 1 , 1 0 5 ] [1,10^5] [1,105]),并返回上一个比它大的整数和它之间的下标之差。

可以用单调栈。代码如下:

class StockSpanner {
 public:
  using PII = pair<int, int>;
  stack<PII> stk;
  int day;
  StockSpanner() {
    stk.push({-1, 2e9});
    day = 0;
  }

  int next(int x) {
    while (stk.size() && stk.top().second <= x) stk.pop();
    int res = day - stk.top().first;
    stk.push({day++, x});
    return res;
  }
};

初始化时间复杂度 O ( 1 ) O(1) O(1),每次操作时空复杂度 O ( n ) O(n) O(n) n n n表示操作次数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值