题目链接:https://leetcode.cn/problems/online-stock-span/
题目如下:
class StockSpanner {
public:
StockSpanner() {
}
int next(int price) {
//求的是左边第一个比当前值大的数的位置
//使用单调栈,只不过单调栈要同时存储price和当前price的跨度
pair<int,int> cur(price,1);
while(stk.size()!=0&&stk.top().first<=price){
cur.second+=stk.top().second;
stk.pop();
}
stk.push(cur);
return cur.second;
}
private:
stack<pair<int, int>> stk;
};
/**
* Your StockSpanner object will be instantiated and called as such:
* StockSpanner* obj = new StockSpanner();
* int param_1 = obj->next(price);
*/