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

相关推荐
9***Y4812 分钟前
Java开发工具IntelliJ IDEA技巧
java·开发语言·intellij-idea
Java爱好狂.21 分钟前
2025全年Java面试真题总结!
java·jvm·高并发·多线程·java面试·后端开发·java八股文
Charles_go40 分钟前
C#中级39、什么是依赖注入设计模式
java·设计模式·c#
ComplexPy43 分钟前
ZKMall-B2B2C Redission延时队列
java·redis
q***965843 分钟前
深入解析Spring Boot中的@ConfigurationProperties注解
java·spring boot·后端
java1234_小锋43 分钟前
讲讲Mybatis的一级、二级缓存?
java·开发语言·mybatis
e***87701 小时前
记录 idea 启动 tomcat 控制台输出乱码问题解决
java·tomcat·intellij-idea
发现你走远了1 小时前
2025 idea 指定配置环境运行springboot 设置active和env启动端口,多端口启动 (保姆级图文)
java·spring boot·intellij-idea
sanggou1 小时前
Java秒杀系统设计与实现
java
小年糕是糕手1 小时前
【C++】C++入门 -- 输入&输出、缺省参数
c语言·开发语言·数据结构·c++·算法·leetcode·排序算法