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

代码随想录算法训练营第五十七天|739. 每日温度、496.下一个更大元素 I

LeetCode 739. 每日温度
题目链接:739. 每日温度 - 力扣(LeetCode)

单调栈开始,为什么要用栈,因为栈是先入后出,当我们遍历从前往后的时候,每次遍历的元素都是添加至栈尾,方便我们进行比较,满足条件计算下标差值(因为是求几天后比今天热),不满足就继续走。

代码:

#python  //数组中每一位表示之后比今天温度高的天数距离
class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        res = [0 for _ in range(len(temperatures))]   //每个的长度
        stack = []   //初始化一个空栈
        for i in range(len(temperatures)):
            while len(stack) > 0 and temperatures[i] > temperatures[stack[-1]]:  #如果大,就继续,如果小,啥都不操作,继续stack.append

                res[stack[-1]] = i - stack[-1]   #stack[-1]是满足条件的下标,i - stack[-1]是距离
                stack.pop()  #用完了丢掉
            stack.append(i)  #第一步,要把当前的下标放入栈中
        return res

LeetCode 496.下一个更大元素 I
题目链接:496. 下一个更大元素 I - 力扣(LeetCode)

先看是示例,题目意思是nums1中每个元素存在与nums2,对nums1中每个元素在nums2中对应位置之后进行判别,找到更大的元素,同样和上一题一样涉及到了位置距离的判别,因此同样使用单调栈。

代码:

#python
class Solution:  
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:  
        stack = []  
        nums2_next_greater = {}  # 用于存储nums2中每个元素的下一个更大的元素  
          
        # 首先,找出nums2中每个元素的下一个更大的元素  
        for num in nums2:  
            while stack and num > stack[-1]:  
                nums2_next_greater[stack.pop()] = num  
            stack.append(num)  
          
        # 处理栈中剩余的元素,它们没有下一个更大的元素  
        while stack:    
            nums2_next_greater[stack.pop()] = -1  
          
        # 对于nums1中的每个元素,查找其在nums2中的下一个更大的元素  
        res = [nums2_next_greater.get(num, -1) for num in nums1]  
        return res


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

相关文章:

  • 20241116解决在WIN11和ubuntu20.04通过samba共享时出现局域网千兆带宽拉满的情况
  • QList和QSet常用操作(查找、插入、排序、交集)
  • 【原创】如何备份和还原Ubuntu系统,非常详细!!
  • day03(单片机高级)RTOS
  • Linux :进程间通信之管道
  • 【网络】什么是交换机?switch
  • java学习part13Object类和常用方法
  • C#中的事件(委托的发布和订阅、事件的发布和订阅、EventHandler类、Windows事件)
  • scoop bucket qq脚本分析(qq绿色安装包制作)
  • UDP客户端使用connect与UDP服务器使用send函数和recv函数收发数据
  • 蚂蚁庄园小课堂答题今日答案最新
  • 【腾讯云云上实验室】用向量数据库—实践相亲社交应用
  • 数据结构 | TOP-K问题
  • Linux安装Tesseract-OCR(操作系统CentOS)
  • H3C网络管理系统任意文件读取漏洞复现 [附POC]
  • 线性分类器--图像表示
  • 网易云音频数据如何爬取?
  • 通俗易懂的spring Cloud;业务场景介绍 二、Spring Cloud核心组件:Eureka 、Feign、Ribbon、Hystrix、zuul
  • MATLAB中FFT频谱分析使用详解
  • Mysql之局域网内不同ip互登陆mysql
  • SpringBoot yml配置文件打印值
  • 【iOS-UIImagePickerController访问相机和相册】
  • 微服务Dubbo
  • [C++]六大默认成员函数详解
  • CleanMyMac X4.14.5Crack最新Mac电脑清理优化最佳应用
  • C++:对象模型和this指针