Deque<int[]> stack;//存储之前的较大值和下标
int idx;//当前下标
public StockSpanner() {
stack = new ArrayDeque<int[]>();
stack.push(new int[]{-1, Integer.MAX_VALUE});
idx = -1;
}
public int next(int price) {
idx++;
//只要不大于今天则出栈
while (price >= stack.peek()[1]) {
stack.pop();
}
int ret = idx - stack.peek()[0];//计算天数
stack.push(new int[]{idx, price});//今天入栈
return ret;
}
单调栈leetcode.901
最新推荐文章于 2023-02-15 18:06:13 发布