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

相关推荐
uuuuuuu4 分钟前
数组中的排序问题
算法
沐浴露z6 分钟前
如何应对服务雪崩?详解 服务降级与服务熔断
java·微服务
Stream8 分钟前
加密与签名技术之密钥派生与密码学随机数
后端·算法
Stream10 分钟前
加密与签名技术之哈希算法
后端·算法
liwulin050612 分钟前
【JAVA】AES加密
java
阿宁又菜又爱玩20 分钟前
Maven基础知识
java·maven
S***q37722 分钟前
【Springboot】@Autowired和@Resource的区别
java·spring boot·mybatis
南部余额23 分钟前
SpringBoot自定义场景启动器
java·spring boot·场景启动器
p***s9124 分钟前
【SpringBoot】日志文件
java·spring boot·spring
少许极端27 分钟前
算法奇妙屋(十五)-BFS解决边权为1的最短路径问题
数据结构·算法·bfs·宽度优先·队列·图解算法·边权为1的最短路径问题