算法练习题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与弹出的那个索引做差值,就是弹出元素索引处的目标值,就是我们要的。画图看的更清楚。

相关推荐
Carol063014 分钟前
上肢及肩肘关节
java·服务器·数据库
lengxuenong19 分钟前
树状数组 · 信息学学习手册1-求和3个模板
c++·学习·算法·青少年编程
yliucherish21 分钟前
Log4Shell 复现实录:我读 OpenJDK 源码,发现两道防线的默认值竟然相反
java
ComputerInBook28 分钟前
泛函分析概观
人工智能·算法·机器学习·泛函分析
维拉德30 分钟前
Java新人第一次接打标需求:从抓包找接口到客户端展示
java
luobobo89639 分钟前
支付回调验签连续失败三天,最后发现是网关的时间戳单位问题
java
BBmmo39 分钟前
Java InputStream.read() 为什么返回 int?
java
Nuanyt1 小时前
LeetCode Hot100 刷题笔记 · 普通数组专题
java·笔记·算法·leetcode
q27551300421 小时前
AS8132 DP转HDMI 4K60(420)被动式 国产性价比AS方案
linux·算法·硬件架构·dash
安全指北针1 小时前
密态计算:数据 “可用不可见” 的底层技术解析
人工智能·算法