901. Online Stock Span - Medium
前往題目
想法
Stack
,但無從下手
思路
next()
時,預設span
為1
stack
裡如果有<= price
的,就pop
然後加到當前span
直到stack
裡的數比當前price
還要大。如此一來就可以捨去一些數字,因為span
都儲存在後來的數字裡- 結束前把新的
price
以及span
推進stack
變成Monotonic decreasing
的stack
Code
class StockSpanner {
Stack<Pair<Integer, Integer>> stack;
public StockSpanner() {
// (Price, span)
// Pair<Integer, Integer> pair = new Pair<>();
stack = new Stack();
}
public int next(int price) {
// Default span
int span = 1;
// Compute span
while (!stack.isEmpty() && stack.peek().getKey() <= price) {
span += stack.pop().getValue();
}
// Push to the stack
stack.push(new Pair(price, span));
return span;
}
}
901. Online Stock Span - Medium
https://f88083.github.io/2024/08/15/901-Online-Stock-Span-Medium/