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

相关推荐
TracyCoder1237 小时前
LeetCode Hot100(15/100)——54. 螺旋矩阵
算法·leetcode·矩阵
开发者小天7 小时前
python中For Loop的用法
java·服务器·python
flushmeteor7 小时前
JDK源码-基础类-String
java·开发语言
毕设源码-钟学长7 小时前
【开题答辩全过程】以 基于ssm的空中停车场管理系统为例,包含答辩的问题和答案
java
不愿是过客8 小时前
java实战干货——长方法深递归
java
u0109272718 小时前
C++中的策略模式变体
开发语言·c++·算法
2501_941837268 小时前
停车场车辆检测与识别系统-YOLOv26算法改进与应用分析
算法·yolo
小北方城市网9 小时前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
探序基因9 小时前
单细胞Seurat数据结构修改分群信息
数据结构
六义义9 小时前
java基础十二
java·数据结构·算法