解法
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
// 维护一个单调递减栈,栈里面存放下标,找到大于栈顶的再跳出计算
int len = temperatures.length;
int[] res = new int[len];
Stack<Integer> s = new Stack<>();
for (int i = 0; i < len; i++) {
// 当前大于栈顶,说明是温度升高的一天,可以将之前小于的点都算出来
while (!s.isEmpty() && temperatures[i] > temperatures[s.peek()]) {
int index = s.pop();
res[index] = i - index;
}
s.add(i);
}
return res;
}
}
网友评论