Daily LeetCode – day0084 0901. Online Stock Span

import java.util.ArrayList;
import java.util.List;

// 0901. Online Stock Span
class StockSpanner {
    List<Stock> stockList;
    int current;

    public StockSpanner() {
        stockList = new ArrayList<>();
        current = 0;
    }

    public int next(int price) {
        int check = current - 1;
        while (check >= 0) {
            Stock checkStock = stockList.get(check);
            if (price >= checkStock.price) {
                check -= checkStock.span;
            } else {
                break;
            }
        }
        int ret = current - check;
        stockList.add(new Stock(price, ret));
        ++current;
        return ret;
    }
}

class Stock {
    int price;
    int span;

    public Stock(int price, int span) {
        this.price = price;
        this.span = span;
    }
}
学习笔记:
这是一道单调栈的题目,要考虑单调性。
一个个往前找就太不划算了,需要根据上一个的单调性跳着找效率才高。
不过我也不清楚栈的写法,我的写法是比较朴素的面向对象写法。
最近天天加班,属实没有什么多余时间研究。


关于樊轶群

一个善良的理想主义者。
此条目发表在每日LeetCode分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注