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;
}
}
数据结构核心原理与算法应用