算法练习题06:leetcode793每日温度

单调栈解法

复制代码
class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int length = temperatures.length;
        int[] ans = new int[length];
        Stack<Integer> stack = new Stack<>();
        for(int i = 0;i<length;i++){
            int temperature = temperatures[i];
            while(!stack.isEmpty()&&temperature>temperatures[stack.peek()]){
                int pre = stack.pop();
                ans[pre] = i - pre;
            }
            stack.push(i);
        }
        return ans;
    }
}

不管咋样反正栈为空就先入栈,然后栈中存的是数组中数的索引,遍历这个数组,如果下一个数字比栈顶索引在数组中的值小,那么继续push压入栈,反之,下一个数字比栈顶索引在数组中的值大,那么就达成我们的目的了,找到比栈顶大的数了,那么pop弹出栈顶,i与弹出的那个索引做差值,就是弹出元素索引处的目标值,就是我们要的。画图看的更清楚。

相关推荐
ch.ju14 小时前
Java程序设计(第3版)第二章——循环结构(3)
java
再玩一会儿看代码14 小时前
idea中快捷键详细总结整理
java·ide·经验分享·笔记·学习·intellij-idea
IT光14 小时前
IDEA 2026.1 配置属性识别问题解决
java·ide·intellij-idea
MegaDataFlowers14 小时前
3.无重复字符的最长子串
算法
lst042614 小时前
白色区域的来源是:
java
不羁的fang少年14 小时前
Netty网络模型
java·开发语言
想不明白的过度思考者14 小时前
一个叫Swagger的工具,让写接口文档变成享受
java·spring boot·接口·swagger
juniperhan14 小时前
Flink 系列第16篇:Flink 核心数据类型类详解(POJO、Row、Tuple)
java·大数据·数据仓库·分布式·flink
人道领域14 小时前
【LeetCode刷题日记】20.有效的括号
算法·leetcode·职场和发展
生信研究猿14 小时前
#P3492.第1题-基于决策树预判资源调配优先级
python·算法·决策树