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];//默认为 0Stack<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;}
}