栈----4.每日温度
739. 每日温度 - 力扣(LeetCode)
/**
单调栈:
首先将元素逐个入栈,栈中存放元素的索引。
入栈时进行判断,若待入栈元素比栈顶元素大,则下标相减得到栈顶元素的answer,将栈顶元素弹出
重复上述流程继续判断,直到 待入栈元素 <= 栈顶元素,入栈判断数组中下一个元素
若数组遍历完毕,栈中还有元素,则栈中剩余元素answer为0
*/
class Solution { /** 单调栈: 首先将元素逐个入栈,栈中存放元素的索引。 入栈时进行判断,若待入栈元素比栈顶元素大,则下标相减得到栈顶元素的answer,将栈顶元素弹出 重复上述流程继续判断,直到 待入栈元素 <= 栈顶元素,入栈判断数组中下一个元素 若数组遍历完毕,栈中还有元素,则栈中剩余元素answer为0 */ public int[] dailyTemperatures(int[] temperatures) { //初始化,定义answer记录结果 int len = temperatures.length; int[] answer = new int[len]; //栈 Deque stack = new ArrayDeque(); for(int i = 0; i temperatures[stack.peek()]) { int index = stack.pop(); answer[index] = i - index; } //直到待入栈元素 <= 栈顶元素,将元素入栈 stack.push(i); } return answer; }}