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

相关推荐
掘我的金6 分钟前
播放器最怕“首帧黑屏”?我给 LibreTV 加了一套缓冲与预加载策略
java
Swift社区11 分钟前
LeetCode 432 - 全 O(1) 的数据结构
数据结构·算法·leetcode
逝玄12 分钟前
关于图灵停机问题不可判定性证明
算法·计算机科学
低客的黑调23 分钟前
为你的项目选择一个适合的[垃圾收集器]
java·jvm·算法
雨中飘荡的记忆32 分钟前
优惠券系统设计与实现
java
1***t82732 分钟前
将 vue3 项目打包后部署在 springboot 项目运行
java·spring boot·后端
芬加达36 分钟前
leetcode34
java·数据结构·算法
__万波__40 分钟前
二十三种设计模式(三)--抽象工厂模式
java·设计模式·抽象工厂模式
资深web全栈开发1 小时前
LeetCode 1015. 可被 K 整除的最小整数 - 数学推导与鸽巢原理
算法·leetcode·职场和发展