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;
}
}
学习笔记:
这是一道单调栈的题目,要考虑单调性。
一个个往前找就太不划算了,需要根据上一个的单调性跳着找效率才高。
不过我也不清楚栈的写法,我的写法是比较朴素的面向对象写法。
最近天天加班,属实没有什么多余时间研究。