每日温度-leetcode

题目描述

给定一个整数数组 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 <= 105
  • 30 <= temperatures[i] <= 100

解法一

思路:

采用栈,栈中存储元素的下标,栈为空,下标i直接进栈,不为空,比较新的元素与栈顶元素所在数组的元素大小,如果栈顶在数组中的元素小于新的元素,那么将栈顶出栈,并且将当前inde-i存入结果数组中。

代码:

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        Deque<Integer> stack = new ArrayDeque<>();
        int[] res = new int[temperatures.length];
        stack.push(0);
        for (int i = 1; i < temperatures.length; i++) {
            while(!stack.isEmpty()&&temperatures[stack.peek()]<temperatures[i]){
                int index=stack.pop();
                res[index]=i-index;
            }
            stack.push(i);
        }
        res[temperatures.length-1]=0;
        return res;
    }
}
posted @ 2026-04-03 22:44  狐狸胡兔  阅读(2)  评论(0)    收藏  举报