参考题解
⏰ 时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)
class Solution {
public int[] dailyTemperatures(int[] temperatures)
{
int n = temperatures.length;
int[] t = temperatures;
int[] res = new int[n];//默认为 0
Stack stack = new Stack<>();//单调递减栈
for (int i = 0; i < n; i++)
{
while (!stack.isEmpty() && t[i] > t[stack.peek()])
{
// 栈顶元素只有在出现 t[i] 比它大时才会出栈,i 就是 就是 栈顶元素 的后面最近的升稳天、
Integer idx = stack.pop();
res[idx] = i - idx;
}
stack.add(i);//所有小于 t[i] 的元素都会出栈,所有当前 t[i] 肯定是小于 栈顶元素的,入栈
}
return res;
}
}