class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int n = temperatures.length;
Stack<Integer> stack = new Stack<>();
//默认将数组中的所有元素初始化为 0
int[] results = new int[n];
for(int i = 0; i < n; ++i) {
while(!stack.isEmpty() &&temperatures[i] > temperatures[stack.peek()]) {
int index = stack.pop();
results[index] = i - index;//注意,更新的是results[index]而不是results[i]
}
//栈中存放的是那些“还没有遇见在它之后位置比它温度值更大的元素的索引”
// 无条件压入 i 是为了确保每一个温度都能得到正确的处理。每一个索引被压入栈之后,等待未来找到更高温度时再弹出。
stack.push(i);
}
return results;
}
}