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

相关推荐
咕噜咕噜啦啦16 分钟前
Java期末习题速通
java·开发语言
盐真卿34 分钟前
python2
java·前端·javascript
玄冥剑尊35 分钟前
贪心算法进阶
算法·贪心算法
玄冥剑尊38 分钟前
贪心算法深化 I
算法·贪心算法
52Hz11841 分钟前
力扣73.矩阵置零、54.螺旋矩阵、48.旋转图像
python·算法·leetcode·矩阵
BHXDML44 分钟前
第一章:线性回归& 逻辑回归
算法·逻辑回归·线性回归
iAkuya1 小时前
(leetcode)力扣100 二叉搜索树种第K小的元素(中序遍历||记录子树的节点数)
算法·leetcode·职场和发展
一嘴一个橘子2 小时前
mybatis - 动态语句、批量注册mapper、分页插件
java
组合缺一2 小时前
Json Dom 怎么玩转?
java·json·dom·snack4
-To be number.wan2 小时前
B 树 vs B+ 树:为什么 MySQL 用 B+ 树,而不是 B 树?
数据结构