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

相关推荐
xq952717 小时前
leetcode 算法之合并两个有序数组
java
Wect17 小时前
LeetCode 92. 反转链表II :题解与思路解析
前端·算法·typescript
Wect17 小时前
LeetCode 138. 随机链表的复制:两种最优解法详解
前端·算法·typescript
近津薪荼17 小时前
优选算法——前缀和(4):除了自身以外数组的乘积
算法
beata17 小时前
Java基础-11:充分理解Collection和Map接口集合底层实现和避坑指南
java·后端
李派森17 小时前
AI大模型之丙午马年运势模型的构建与求解
笔记·算法
俩娃妈教编程17 小时前
洛谷选题:P1055 [NOIP 2008 普及组] ISBN 号码
c++·算法
消失的旧时光-194317 小时前
第二十二课:领域建模实战——订单系统最小闭环(实战篇)
java·开发语言·spring boot·后端
J_liaty18 小时前
Java Stream流常用方法归纳整理
java·stream
hans汉斯18 小时前
基于联邦学习的隐私保护和抗投毒攻击方法研究
网络·人工智能·算法·yolo·数据挖掘·聚类·汉斯出版社