淘宝放单网站开发,网站开发有哪些,湖南建筑信息网官网,安康 住房城乡建设部网站LeetCode 739. 每日温度
题目描述
给定一个整数数组 temperatures #xff0c;表示每天的温度#xff0c;返回一个数组 answer #xff0c;其中 answer[i] 是指对于第 i 天#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高#xff0c;请在该位置用 0…LeetCode 739. 每日温度
题目描述
给定一个整数数组 temperatures 表示每天的温度返回一个数组 answer 其中 answer[i] 是指对于第 i 天下一个更高温度出现在几天后。如果气温在这之后都不会升高请在该位置用 0 来代替。 示例: 输入: temperatures [73,74,75,71,69,72,76,73] 输出: [1,1,4,2,1,1,0,0]
思路
思路单调栈栈中存储的是一个数组包括当日温度和天数
遍历温度数组逐步将温度压入栈中当遇到下一个高温temperatures[i] deque.peek()[0]时使用while循环弹出结果并将当前温度压入数组
代码
class Solution {public int[] dailyTemperatures(int[] temperatures) {DequeInteger[] deque new ArrayDeque();int[] result new int[temperatures.length];for (int i 0; i temperatures.length; i) {if (!deque.isEmpty() deque.getLast()[0] temperatures[i]){ // 说明出现了下一个大温度while (!deque.isEmpty() deque.getLast()[0] temperatures[i]){Integer[] popElem deque.removeLast();result[popElem[1]] i - popElem[1];}}deque.addLast(new Integer[]{temperatures[i], i});}return result;}
}