Problem: 739. 每日温度
文章目录
- 思路
- 复杂度
- 💝 单调栈
思路
👩🏫 参考题解
复杂度
⏰ 时间复杂度:
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<Integer> 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;
}
}