LeetCode、739. 每日温度【中等,单调栈】

文章目录

前言

博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。

涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。

博主所有博客文件目录索引:博客目录索引(持续更新)

视频平台:b站-Coder长路


LeetCode、739. 每日温度【中等,单调栈】

题目链接及分类

题目链接:LeetCode、739. 每日温度

分类:数据结构/栈/单调栈


思路

单调栈

思路:单调栈一般用来解决 next greater element 问题(求一侧最近的更大/小的元素),单调栈也是"空间换时间"思想的一个实际应用。

  • 本题是找到对比当前温度的最近温度高的元素。此时就是对应着使用单调栈来进行处理,对于找到最近高温度的都是对出栈的元素处理的。

复杂度分析:时间复杂度O(n);空间复杂度O(n)

java 复制代码
class Solution {
    //10万温度
    //单调栈  当前元素与栈顶元素比较 将符合条件的温度出栈此时就可以找到该温度后最近的比它高的温度
    public int[] dailyTemperatures(int[] temperatures) {
        int n = temperatures.length;
        //单调栈
        Stack<Integer> stack = new Stack<>();
        //结果集
        int[] res = new int[n];
        //遍历所有的温度
        for (int i = 0; i < n; i ++) {
            //取得当前的温度与栈中温度比较 弹出的温度即可确定最近的温度是哪个
            while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {
                int index = stack.pop();//索引位置
                res[index] = i - index;//后几天
            }
            //将当前的温度索引入栈
            stack.push(i);
        }
        return res;
    }
}

资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅


整理者:长路 时间:2024.2.13

相关推荐
屁股割了还要学19 分钟前
【数据结构入门】栈和队列
c语言·开发语言·数据结构·学习·算法·青少年编程
Monkey的自我迭代33 分钟前
支持向量机(SVM)算法依赖的数学知识详解
算法·机器学习·支持向量机
阿彬爱学习1 小时前
AI 大模型企业级应用落地挑战与解决方案
人工智能·算法·微信·chatgpt·开源
L.fountain2 小时前
配送算法10 Batching and Matching for Food Delivery in Dynamic Road Networks
算法·配送
是乐谷4 小时前
饿了么招java开发咯
java·开发语言·人工智能·程序人生·面试·职场和发展
啊阿狸不会拉杆5 小时前
《算法导论》第 13 章 - 红黑树
数据结构·c++·算法·排序算法
qiuyunoqy5 小时前
蓝桥杯算法之搜索章 - 3
c++·算法·蓝桥杯·深度优先·dfs·剪枝
lifallen6 小时前
Kafka ISR机制和Raft区别:副本数优化的秘密
java·大数据·数据库·分布式·算法·kafka·apache
m0_626535206 小时前
贪心算法学习 3 买卖股票的最佳时机 i ii
学习·算法·贪心算法
zxctsclrjjjcph7 小时前
【递归、搜索和回溯】FloodFill 算法介绍及相关例题
c++·算法·leetcode·宽度优先·深度优先遍历