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

739、每日温度:

class Solution(object):
    def dailyTemperatures(self, temperatures):
        """
        :type temperatures: List[int]
        :rtype: List[int]
        """
        stack = []
        res = [0] * len(temperatures)
        stack.append(0)
        for i in range(1, len(temperatures)):
            if temperatures[i] <= temperatures[stack[-1]]:
                stack.append(i)
            else:
                while stack and temperatures[i] > temperatures[stack[-1]]:
                    res[stack[-1]] = i - stack[-1]
                    stack.pop(-1)
                stack.append(i)
        return res

用单调栈确实很巧妙,因为是记录到更高温度的天数,因此相当于要求第一个大于当前数值的元素,从栈顶到栈底就是单调递增的

496、下一个更大元素I:

class Solution(object):
    def nextGreaterElement(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        stack = [0]
        res = [-1] * len(nums1)
        hash_map = {}
        for i, v in enumerate(nums1):
            hash_map[v] = i
        for i in range(1, len(nums2)):
            if nums2[i] <= nums2[stack[-1]]:
                stack.append(i)
            else:
                while stack and nums2[i] > nums2[stack[-1]]:
                    if nums2[stack[-1]] in hash_map:
                        index = hash_map[nums2[stack[-1]]]
                        res[index] = nums2[i]
                    stack.pop(-1)
                stack.append(i)
        return res

求下一个更大元素,本题的技巧在于先建立nums1的元素值到下标的映射,方便nums2在遍历过程中寻找到index,注意stack.pop的作用域,无论nums2[stack[-1]]是否在map里,都是要pop掉的stack[-1]的

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 10:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 10:26:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 10:26:02       82 阅读
  4. Python语言-面向对象

    2024-03-14 10:26:02       91 阅读

热门阅读

  1. Oracle Linux 8.9 安装 Postman

    2024-03-14 10:26:02       38 阅读
  2. 【OpenCV实战】基于OpenCV的传统手势识别流程详解

    2024-03-14 10:26:02       38 阅读
  3. 跨域的几种方式?(详解)

    2024-03-14 10:26:02       43 阅读
  4. ChatGLM3 源码解析(五)

    2024-03-14 10:26:02       30 阅读
  5. Apache Spark 的基本概念和在大数据分析中的应用

    2024-03-14 10:26:02       44 阅读
  6. 项目使用jdk17启动报错

    2024-03-14 10:26:02       44 阅读
  7. 原型和原型链的区别,__proto__和prototype的区别

    2024-03-14 10:26:02       39 阅读
  8. Go语言的自给自足:编译自身的神奇之旅

    2024-03-14 10:26:02       45 阅读
  9. 【Docker】Tensorflow 容器化部署

    2024-03-14 10:26:02       42 阅读
  10. 预取和缓存替换介绍--自用

    2024-03-14 10:26:02       40 阅读
  11. 【WEEK2】学习目标及总结【SpringMVC】【中文版】

    2024-03-14 10:26:02       41 阅读
  12. Spring MVC InternalResourceViewResolver原理解析

    2024-03-14 10:26:02       46 阅读
  13. Goland运行go语言基础篇

    2024-03-14 10:26:02       45 阅读
  14. 面试经典150题(108-110)

    2024-03-14 10:26:02       43 阅读
  15. python使用rabbitmq发送消息和接收消息数据

    2024-03-14 10:26:02       45 阅读