package LeetCode.FiveHundredOneToOneThousand;
import java.util.Deque;
import java.util.LinkedList;
public class SevenHundredAndThirtyNine {
public int[] dailyTemperatures(int[] t) {
// 我们用栈将 t 的下标进行记录,如果栈顶的值比栈底的值大,我们就移除比他大的数,并将两个下标相减进行记录
// 直到栈空
int len = t.length;
int [] answer = new int[len];
Deque<Integer> stack = new LinkedList<>();
// 进行记录
for (int i = 0; i < len; i++){
// 找当前下标下下一个比它大的数,并将其进行记录
while (!stack.isEmpty() && t[i] > t[stack.peek()]){
int inx = stack.pop();
answer[inx] = i - inx;
}
// 将下一个下标入栈
stack.push(i);
}
return answer;
}
}
数据结构核心原理与算法应用

本文介绍了一种使用单调栈实现的高效算法,用于解决LeetCode上的一道题目:每日温度。该算法通过一次遍历,计算出每天之后几天的温度是否升高,以及升高的天数。代码实现清晰,展示了如何利用数据结构优化算法效率。
1865

被折叠的 条评论
为什么被折叠?



