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

相关推荐
一条咸鱼_SaltyFish几秒前
大文件性能优化:从百倍提升看底层原理的实践思考
java·性能优化·架构演进·大文件处理·nagle·零对象设计
好家伙VCC2 分钟前
**发散创新:用 Rust构建多智能体系统,让分布式协作更高效**在人工智能快速演进的今天,**多智能体系统(
java·人工智能·分布式·python·rust
tod1133 分钟前
力扣基础算法分类刷题:位运算、数学、数组与字符串详解
算法·leetcode·职场和发展
ValhallaCoder4 分钟前
hot100-图论
数据结构·python·算法·图论
小沈同学呀4 分钟前
Spring Boot实现加密字段模糊查询的最佳实践
java·spring boot·后端·encrypt
万能的小裴同学6 分钟前
饥荒Mod
java·开发语言·junit
熬了夜的程序员6 分钟前
【LeetCode】118. 杨辉三角
linux·算法·leetcode
智算菩萨8 分钟前
规模定律的边际递减与后训练时代的理论重构
人工智能·算法
小龙报8 分钟前
【51单片机】51 单片机 IIC 协议深度解析:时序实现 + GXHT3L 连续转换模式 + 数据解析
c语言·数据结构·stm32·单片机·嵌入式硬件·物联网·51单片机
kanhao1009 分钟前
电平交叉采样 (Level-Crossing Sampling)
算法·fpga开发·fpga