当前位置: 首页 > article >正文

Leetcode 739-每日温度

请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。
在这里插入图片描述

题解(单调递减栈)

什么时候用单调栈呢?
通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)

注意栈是尾端进尾端出,即先进后出

1.为了获取当前温度的下一个更高温度,建立一个单调递减栈

注意:为了便于更新res,这里存数组下标而不是数组值

2.如果入栈元素比栈顶元素大,说明栈顶元素找到了下一个更高温度,则依次循环出栈,直到当前于元素小于栈顶元素
3.将当前元素的下标入栈

注意:不需要特殊考虑倒数第二个和倒数第一个数,因为数组值默认为0,如果数组值没有更新就表明后面没有更大的元素

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        LinkedList<Integer> stack=new LinkedList<>();
        //初始化
        stack.push(0);
        int[] res= new int[temperatures.length];
        for(int i=1;i<temperatures.length;i++){
            while(!stack.isEmpty()&&temperatures[i]>temperatures[stack.peek()]){
                int num=stack.pop();
                res[num]=i-num;
            }
            stack.push(i);
        }
        return res;
    }
}

http://www.kler.cn/a/429003.html

相关文章:

  • 与专业舆情优化公司合作是品牌化解舆情危机的重要途径
  • 创建 pdf 合同模板
  • MyBatis(六)关联查询
  • Python与PyTorch的浅拷贝与深拷贝
  • 【Python】随机数种子(random seed)的设置
  • 流程与管理篇:IPD核心思想与框架
  • Docker容器网络与通信
  • mysql备份数据库
  • 8.16DEBUG——DOCKER相关,DOCKER启动异常
  • Python-分析内存进制转换
  • HOC vs Render Props vs Hooks
  • 在Windows下C语言获取当前应用程序运行路径并获取指定目录下所有文件(包括子目录)
  • 决策树:ID3、C4.5和CART特征选择方式
  • Lua使用点号和冒号的区别
  • Selenium是广泛使用的模拟浏览器运行的库
  • 为超越JVM而生?深入理解Kotlin Native的梦想与可能
  • 使用PaddleOCR遇到的问题Bug
  • 机器学习:全面学习路径指南
  • 漫画之家Spring Boot:漫画资源的跨设备访问
  • photoblog解题过程
  • 代码随想录第五十一天
  • 天天 AI-241208:今日热点- OpenAI发布强化微调API,能深度定制超复杂大模型了
  • Linux内核升级操作和 k8s 常见命令
  • Vue3.0中的响应式原理是什么?vue2的响应式原理是什么?
  • LeetCode Hot100 61~70
  • 2024最新qrcode.min.js生成二维码Demo