JAVA练习345- 每日温度

发布时间:2026/7/24 20:08:10
JAVA练习345- 每日温度 题目概览给定一个整数数组temperatures表示每天的温度返回一个数组answer其中answer[i]是指对于第i天下一个更高温度出现在几天后。如果气温在这之后都不会升高请在该位置用0来代替。示例 1:输入:temperatures [73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]示例 2:输入:temperatures [30,40,50,60]输出:[1,1,1,0]示例 3:输入:temperatures [30,60,90]输出:[1,1,0]提示1 temperatures.length 10^530 temperatures[i] 100来源739. 每日温度 - 力扣LeetCode解题分析方法单调栈我们可以维护一个单调递减的栈当当前元素大于栈顶元素时就将小于当前元素的元素出栈此时当前元素一定是第一个大于出栈元素的出栈元素对应的answer 就是当前索引 - 该元素对应的索引。时间复杂度O(n)空间复杂度O(n)class Solution { public int[] dailyTemperatures(int[] temperatures) { int n temperatures.length; int[] res new int[n]; DequeInteger dq new LinkedList(); for (int i 0; i n; i) { int temp temperatures[i]; while(!dq.isEmpty() temperatures[dq.peek()] temp) { int top dq.pop(); res[top] i - top; } dq.push(i); } return res; } }