力扣901.股票价格跨度
-
单调栈
- 若当前价格 >= 栈顶元素 弹出栈顶元素
- 找到最远的符合要求的
cpp
class StockSpanner {
stack<pair<int,int>> st;
int cur_day = -1;
public:
StockSpanner() {
st.emplace(-1,INT_MAX);
}
int next(int price) {
while(price >= st.top().second)
st.pop();
int ans = ++cur_day - st.top().first;
st.emplace(cur_day,price);
return ans;
}
};