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

相关推荐
生信研究猿1 分钟前
#P4625.第2题-大模型训练显存优化算法
算法
‎ദ്ദിᵔ.˛.ᵔ₎3 分钟前
链表 复习
数据结构·链表
逻辑驱动的ken4 分钟前
Java高频面试考点14
开发语言·数据库·算法·哈希算法
故事还在继续吗8 分钟前
C++17关键特性
开发语言·c++·算法
va学弟11 分钟前
Agent入门开发(2):个性化功能添加
java·服务器·ai
Rabitebla11 分钟前
【数据结构】消失的数字+ 轮转数组:踩坑详解
c语言·数据结构·c++·算法·leetcode
84869811911 分钟前
Cursor 用 Java + Vue3 做了一个可落地的酒店管理系统(HMS),支持多门店、RBAC、财务结算,源码开源!
java·开发语言·开源
菜菜的顾清寒13 分钟前
力扣100(20)旋转图像
算法·leetcode·职场和发展
Navigator_Z14 分钟前
LeetCode //C - 1025. Divisor Game
c语言·算法·leetcode
深念Y14 分钟前
王者荣耀与英雄联盟数值设计对比:穿透、乘算与加算、增伤乘算更厉害,减伤加算更厉害
数学·算法·游戏·建模·游戏策划·moba·数值