[LeetCode Hot 100] LeetCode739. 每日温度
题目描述
思路:单调递减栈
使用单调栈的模板即可。
根据题意可知,该题使用的是单调递减栈。
问题抽象为:找出数组中右边第一个比我大的元素。
方法一:
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
// 用于存放结果
int[] res = new int[temperatures.length];
// 单调递减栈,栈中存放的是索引
Deque<Integer> stack = new ArrayDeque<>();
for (int i = 0; i < temperatures.length; i ++) {
while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {
res[stack.peek()] = i - stack.peek();
stack.pop();
}
stack.push(i);
}
return res;
}
}
时间复杂度:O(n)
空间复杂度:O(n)
本文作者:Ac_c0mpany丶
本文链接:https://www.cnblogs.com/keyongkang/p/17924451.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步