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

相关推荐
Wect27 分钟前
LeetCode 39. 组合总和:DFS回溯解法详解
前端·算法·typescript
Wect30 分钟前
LeetCode 46. 全排列:深度解析+代码拆解
前端·算法·typescript
颜酱32 分钟前
Dijkstra 算法:从 BFS 到带权最短路径
javascript·后端·算法
xlp666hub2 小时前
C++ 链表修炼指南
数据结构·c++
用户8307196840822 小时前
Spring Boot WebClient性能比RestTemplate高?看完秒懂!
java·spring boot
木心月转码ing3 小时前
Hot100-Day24-T128最长连续序列
算法
Assby3 小时前
从洋葱模型看Java与Go的设计哲学:为什么它们如此不同?
java·后端·架构
小肥柴3 小时前
A2UI:面向 Agent 的声明式 UI 协议(三):相关概念和技术架构
算法
belhomme5 小时前
(面试题)Netty 线程模型
java·面试·netty