LeetCode-739-每日温度-单调栈

题目描述:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

题目链接: LeetCode-739-每日温度-单调栈

解题思路:单调栈,栈中存放的是数组的下标,并且根据题意得出应该是单调递增栈

每次拿当前正在遍历的 temperatures[i] 和 栈口的元素比较,如果 temperatures[i] >栈口元素,那么计算当前两个索引的距离存到结果数组中后再弹出栈顶元素,继续比较当前栈顶的元素,直到栈顶元素比 temperatures[i] 大,将 i 压入栈,继续上述步骤。
代码实现:

java 复制代码
class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int len = temperatures.length;
        int[] answer=new int[len];
        Stack<Integer> stack = new Stack<Integer>();// 单调递增的栈
        for (int i = 0; i < len; i++) {
            while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]){// 必须是大于,等于也不行
                answer[stack.peek()]=i-stack.peek();
                stack.pop();
            }
            // 直接入栈,入栈的是 下标
            stack.push(i);
        }
        return answer;
    }
}
相关推荐
xqqxqxxq几秒前
洛谷算法1-2 排序(NOIP经典真题解析)java(持续更新)
java·开发语言·算法
嵌入小生0072 分钟前
数据结构 | 常用排序算法大全及二分查找
linux·数据结构·算法·vim·排序算法·嵌入式
近津薪荼2 分钟前
优选算法——滑动窗口4(找子串)
c++·学习·算法
2301_822377657 分钟前
模板代码异常处理
开发语言·c++·算法
hcnaisd27 分钟前
基于C++的游戏引擎开发
开发语言·c++·算法
多恩Stone8 分钟前
【3DV 进阶-12】Trellis.2 数据处理脚本细节
人工智能·pytorch·python·算法·3d·aigc
wfeqhfxz25887829 分钟前
【目标检测系列】:基于YOLOv10n的MAN卡车超载检测系统·结合FasterCGLU与WFU优化算法_1
算法·yolo·目标检测
爱尔兰极光10 分钟前
LeetCode 热题 100-连续最长序列
算法·leetcode·职场和发展
生成论实验室11 分钟前
生成式通用智能(GAGI):基于《易经》状态空间的认知架构
人工智能·神经网络·算法·架构·信息与通信
如意猴11 分钟前
002【模拟】--蛇形方阵、字符串展开
算法