> 技术文档 > 栈----4.每日温度

栈----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; }}