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

相关推荐
多加点辣也没关系几秒前
数据结构与算法|第十二章:图
数据结构·算法
摇滚侠5 分钟前
Java 项目教程《黑马商城》OpenFeign 15 - 19
java·开发语言
小小小米粒6 分钟前
线程池创建模版
java
MClink7 分钟前
小米开源大模型 MiMo 登顶全球第一,还白送百万亿 Token?手把手教你薅羊毛
人工智能·python·算法·openai·架构设计
TE-茶叶蛋8 分钟前
`@interface` 解析
java
摇滚侠10 分钟前
Java 项目教程《黑马商城》微服务拆分 05 - 10
java·开发语言·微服务
PPPPickup13 分钟前
实习日志5.7
java
_Evan_Yao13 分钟前
return 的迷途:try-catch-finally 中 return 的诡异顺序与 Spring 事务暗坑
java·后端·spring·mybatis
薛定谔的猫喵喵14 分钟前
Spring Boot Jar包修改配置文件和Class中硬编码IP的完整指南
java·spring boot·反编译·class
辛苦才能16 分钟前
数据结构-排序算法-堆排序(重点比赛面试经常考)
数据结构·面试·排序算法