首页 > 其他分享 >代码随想录 -- 单调栈 -- 每日温度

代码随想录 -- 单调栈 -- 每日温度

时间:2024-11-28 10:58:26浏览次数:8  
标签:下标 -- 元素 随想录 st temperatures 栈中 单调

单调栈

适用场景

一维数组中,求任意元素左边(右边)第一个比他大(小)的元素的位置。

使用时明确

单调栈中存放的是数组下标

单调栈是递增还是递减

每日温度

739. 每日温度 - 力扣(LeetCode)

思路:

题目中要求当前元素的右边比当前元素大的第一个元素的位置,所以单调栈是递增的,单调栈中存放数组下标。

首先将下标0加入单调栈中,从下标1开始遍历:

  • temperatures[i]>temperatures[st.top()]:下标为i的元素就是比下标为st.top()的元素大的第一个元素,故res[i]=i-st.top(),弹出栈顶元素,直到栈顶元素大于等于当前元素时,将当前元素加入单调栈中。
  • 如果temperatures[i]<=temperatures[st.top()]:下标为i的元素比下标为st.top()的元素还小,直接将下标i加入单调栈中。
class Solution(object):
    def dailyTemperatures(self, temperatures):
        n=len(temperatures)
        res=[0]*n
        st=[0]
        for i in range(1,n):
            if temperatures[i] <= temperatures[st[-1]]:
                st.append(i)
            else:
                while st and temperatures[i] > temperatures[st[-1]]:
                    res[st[-1]]=i-st[-1]
                    st.pop()
                st.append(i)
        return res

标签:下标,--,元素,随想录,st,temperatures,栈中,单调
From: https://blog.csdn.net/weixin_56989647/article/details/144103518

相关文章

  • Web端IM聊天消息该不该用浏览器本地存储?一文即懂!
    本文由转转技术团队刘筱雨分享,原题“一文读懂浏览器本地存储:WebStorage”,下文进行了排版和内容优化。1、引言鉴于目前浏览器技术的进步(主要是HTML5的普及),在Web网页端IM聊天应用的技术选型阶段,很多开发者都会纠结到底该不该像原生移动端IM那样将聊天记录缓存在浏览器的本地,还......
  • 使用八爪鱼爬虫抓取汽车网站数据,分析舆情数据
    我是做汽车行业的,可以用八爪鱼爬虫抓取汽车之家和微博上的汽车文章内容,分析各种电动汽车口碑数据。之前,我写过很多Python网络爬虫的案例,使用requests、selenium等技术采集数据,这次尝试去采集小米SU7在微博、汽车之家上的舆论数据,分析下小米SU7的口碑到底怎么样,用户关心和吐槽......
  • [C语言]使用联合体和结构体 巧妙处理寄存器数据上位机读写的方法
    最近有在研究陀螺仪,里面就有对不同寄存器做配置,然后在读取一定地址的寄存器数据;发现这种逻辑工程上经常有;但是我接触到的代码基本都是通过一大堆宏定义去给他们寄存器地址命名,然后再自己读手册去搞配置;其实在性能上这个操作挺好的,但是我们似乎也没那么在意这几十个字......
  • 代码随想录 -- 动态规划 -- 最长回文子序列
    516.最长回文子序列-力扣(LeetCode)思路:dp数组的含义:dp[i][j]:字符串s从i到j的最长回文子序列的长度为dp[i][j]递推公式:当s[i]=s[j]时:dp[i][j]=dp[i+1][j-1]+2当s[i]!=s[j]时:dp[i][j]=max(dp[i][j-1],dp[i+1][j])初始化:当i=j时:dp[i][j]=1遍历顺序:从下到上,从左到右最......
  • 如何提升日用品行业生产效率?数字化管理成关键
    在日用品行业,快速反应和高效生产是生存之道。从采购、生产到物流配送,每一个环节都充满挑战。市场需求瞬息万变,交付周期日益缩短,任何一个环节的滞后都可能导致整个供应链的断裂。如何在繁忙的工作中保持高效协作、精准调度,并确保及时交付,是许多企业迫切需要解决的问题。但传统的管......
  • 代码随想录 -- 动态规划 -- 编辑距离
    72.编辑距离-力扣(LeetCode)思路:dp数组的含义:dp[i][j]:以i-1为结尾的word1和以j-1为结尾的word2的最少操作数为dp[i][j]递推公式:当word1[i-1]=word2[j-1]时:无需进行任何操作故dp[i][j]=dp[i-1][j-1]当word1[i-1]!=word2[j-1]时:删除一个字符:dp[i][j]=max(dp[i-1][j......
  • 从需求到交付,如何有效控制客户的预期?
    在现代企业管理中,客户预期的管理是项目成功的关键因素之一。无论是软件开发、产品设计还是咨询服务,项目能否成功完成往往取决于客户对于项目成果的预期。如果没有正确的预期管理,客户的需求与项目交付之间就容易产生偏差,进而影响客户的满意度和项目的最终成果。因此,如何准确理解并......
  • 046_pdb_debug_调试赋值语句_先声明赋值_再使用
    pdb_debug_调试赋值语句_先声明赋值_再使用回忆上次内容上次讲了赋值assignment亲手将值指派到变量中   添加图片注释,不超过140字(可选) 赋值语句能运行起来吗?......
  • cloudflare的CND使用,实现ipv4访问ipv6
    1、注册cloudflare,使用国内外邮箱均可,建议使用Edge浏览器,谷歌...2、修改腾讯云或阿里云,域名的DNS服务器。修改为cloudflare的域名服务器阿里云:3、到cloudflare,添加记录。4、获取API令牌。5、到ddns-go配置,让ddns-go定时更改域名ipv6地址。......
  • 使用logback集成logstash 达到ELK日志收集目的
    一、maven引入net.logstash.logbacklogstash-logback-encoder7.2二、配置文件配置logback-logstash.xmllogback-logstash.xml的配置信息<!--输出到logstash的appender--><appendername="logstash"class="net.logstash.logback.appender.LogstashTcpSocketApp......