LeetCode 热题 HOT 100 (004/100)【宇宙最简单版】

【单调栈】No. 0739 每日温度 【中等】👉力扣对应题目指路

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦

题目描述:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 result ,其中 result[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

  • 示例 1:
    输入: temperatures = [73,74,75,71,69,72,76,73]
    输出: result = [1,1,4,2,1,1,0,0]

🔥 思路:遍历一遍 temperatures, 后续一旦找到更大的值就填写对应的 result

  • 最直接的思路是暴力解法,但提交会超时,放在最后供友友们参考~
  • 用空间换时间:用单调栈存储当前尚未找到更大值的日期 (idx)

参考如上思路,给出详细步骤如下:

  • 步骤一⭐确定栈 stack 内元素含义:当前尚未找到更大值的日期 (idx)
  • 步骤二⭐编写遍历 temperatures 的代码框架
  • 步骤三⭐由顶逐个处理当前栈内元素 stack[-1]:若对应温度 temperatures[stack[-1]] 小于当前遍历到的 temperatures[i] 说明找到了满足要求的日期,则填写对应的 result result[stack[-1]]i - stack[-1];已找到则弹出
    • 为什么栈 stack 是单调的:比新栈顶元素 temperatures[i] 小的都会弹出 while stack and temperatures[stack[-1]] < temperatures[i],所以维护了单调栈
    • 为什么需要栈 stack 是单调的:
      • 否则小的温度可能被压在栈内(非栈顶),始终无法处理
      • 如果改用一般列表,对于 temperatures[i] 需要判断列表中存储的每个值 (超时⏳)
  • 步骤四⭐遍历到的 temperatures[i] 入栈 (仅记录 i 即可), 待后续处理
class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:result = [0 for _ in temperatures]stack = []  ## 模拟单调栈  # ------------------------------------------step 1for i in range(len(temperatures)):  # --------------------------------step 2## 比新栈顶元素小的都会弹出,所以维护了单调栈while stack and temperatures[stack[-1]] < temperatures[i]:  # ----step 3result[stack[-1]] = i - stack[-1]stack.pop()  ## 出栈stack.append(i)  ## 入栈  # --------------------------------------step 4return result

复杂度分析

  • 时间复杂度:O(n),其中 n 是温度列表的长度
    • 正向遍历温度列表一遍,对于温度列表中的每个下标,最多有一次进栈和出栈的操作。
  • 空间复杂度:O(n),其中 n 是温度列表的长度
    • 需要维护一个单调栈存储温度列表中的下标。

⏳⏳⏳ 暴力解法来啦 ~ 提交会超时 !!!

class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:result = [0 for _ in temperatures]for slow in range(len(temperatures)):for fast in range(slow+1, len(temperatures)):if temperatures[fast] > temperatures[slow]:result[slow] = fast-slowbreakreturn result                      

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
🔥 LeetCode 热题 HOT 100

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Windows API每日一练》13.1 打印基础

在Windows中使用打印机时&#xff0c;在调用一系列与打印相关的GDI绘图函数的背后&#xff0c;实际上启动了一系列模块之间复杂的交互过程&#xff0c;包括 GDI32库模块、打印机设备驱动程序库模块&#xff08;带.DRV后缀的文件&#xff09;、Windows后台打印处理程序&#xff…

rem 和 px 的关系

在网页设计中&#xff0c;rem 和 px 是用来表示长度或尺寸的单位&#xff0c;它们之间有以下默认关系&#xff1a; 1rem 16px&#xff08;假设根元素的字体大小为默认值&#xff09; 详细说明&#xff1a; 1、px&#xff08;像素&#xff09;&#xff1a; px 是一种绝对单…

【图像处理】不智能的目标识别

目录 目标识别的划分 识别入门 概念学习 滤波 模版 阈值化 形态学操作 开运算 闭运算 编程语言 示例 大家有没有想过在没有人工智能或者说没有机器学习的的时候&#xff0c;计算机是怎么做目标识别的&#xff1f; 计算机视觉时至今日也是急需人才的领域&…

(AAAI,2024)Structure-CLIP:利用场景知识图谱增强多模态结构化表征

文章目录 Structure-CLIP: Towards Scene Graph Knowledge to Enhance Multi-modal Structured Representations相关资料摘要引言方法通过场景图进行语义负采样场景图生成选择语义负样本对比学习目标知识增强编码器 Structure-CLIP: Towards Scene Graph Knowledge to Enhance …

go语言Gin框架的学习路线(七)

GORM入门(基于七米老师) 目录 GORM入门 安装 连接数据库 连接MySQL 连接PostgreSQL 连接Sqlite3 连接SQL Server 我们搞一个连接MySQL的例子 创建数据库 GORM操作MySQL GORM是一个流行的Go语言ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它提供了一种方…

maven私服上传jar包 400 Bad Request 错误

文章目录 前言一、直接看报错二、问题处理三 maven 私服配置说明总结 前言 maven仓库的私服,一般会存放公司或者个人封装的jar包,用来共享给二次开发和协作伙伴用,很方便 第一次发布没有问题,但是我第二次发布,开始报错了 一、直接看报错 [外链图片转存失败,源站可能有防盗链…

数据库使用笔记-基于mysql

来自&#x1f96c;&#x1f436;程序员 Truraly | 田园 的博客&#xff0c;最新文章首发于&#xff1a;田园幻想乡 | 原文链接 | github &#xff08;欢迎关注&#xff09; 文章目录 MySql 一般信息观前提示登录 MySQLSQL 语句 数据库操作指令show databases | 现实数据库列表u…

问题解决实录 | Anaconda | Anaconda Navigator 启动无反应

问题解决实录 | Anaconda | Anaconda Navigator 启动无反应 以管理员身份运行 Anaconda Prompt conda update -n root conda conda update --all如果执行完以上步骤 碰到 AttributeError: module ‘pkgutil’ has no attribute ‘ImpImporter’. Did you mean: ‘zipimporter…

HC-SR04超声波测距模块使用方法和例程(STM32快速移植)

基于STM32和HC-SR04模块实现超声波测距功能 HC-SR04硬件概述HC-SR04超声波距离传感器的核心是两个超声波传感器。一个用作发射器&#xff0c;将电信号转换为40 KHz超声波脉冲。接收器监听发射的脉冲。如果接收到它们&#xff0c;它将产生一个输出脉冲&#xff0c;其宽度可用于…

各类专业技术的pdf电子书

从业多年&#xff0c;收集了海量的pdf电子书籍&#xff0c;感兴趣的私聊。

App Instance 架构示例

前言 在Unity程序设计过程中&#xff0c;我们处理的第一个对象是Application Instance。 它的主要职责是启动流程管理、卸载流程管理&#xff0c;次要职责是管理在内部的子系统生命周期。其他职责&#xff0c;提供或桥接应用程序的配置信息、及其他第三方接口。 它通常以单例的…

图解 Hadoop 架构 |Yarn、MapReduce

Hadoop Hadoop 是什么 Hadoop 是由 Apache 基金会所开发&#xff0c;维护的分布式系统基础架构主要解决海量数据的存储和海量数据的分析计算问题广义上来说&#xff0c;Hadoop 通常是指一个更广泛的概念——Hadoop 生态圈&#xff0c;包括 MapReduce&#xff0c;HDFS&#xf…

淼淼瀛湖水,青青枇杷林

淼淼瀛湖水&#xff0c;青青枇杷林 ——西安工程大学赴陕西安康“筑梦乡村&#xff0c;携手同行”暑期社会实践团 俗语言“五月枇杷满树金”。枇杷营养丰富&#xff0c;食用&#xff0c;具有止渴、润燥、清肺、止咳等功效。为探索枇杷产业&#xff0c;实现乡村振兴&#xff0c…

代码随想录 day 18 二叉树

第六章 二叉树part06 详细布置 530.二叉搜索树的最小绝对差 需要领悟一下二叉树遍历上双指针操作&#xff0c;优先掌握递归 题目链接/文章讲解&#xff1a;https://programmercarl.com/0530.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E7%B…

MacOSM1 配置Miniconda环境,并设置自启动

文章目录 设置环境变量设置自启动参考 设置环境变量 cd vim .zshrc输入一下内容 # 配置Conda CONDA_HOME/Users/hanliqiang/miniconda3 PATH$CONDA_HOME/bin:$PATH生效配置 source .zshrc设置自启动 conda init zsh.zshrc 文件中将会出现以下内容 # >>> conda i…

数据结构~~顺序表

目录 一、顺序表的概念 二、顺序表的接口实现 1.顺序表初始化 2.顺序表销毁 3.检查空间并扩容 4.顺序表尾插、顺序表头插 5.顺序表尾删、顺序表头删 6.顺序表查找 7.顺序表在pos位置插入x、删除pos位置的值 三、完整代码 四、总结 一、顺序表的概念 顺序表是用一段…

SpringCloud的认识和初步搭建

目录 一.认识SpringCloud 二.SpringCloud的部署 2.1开发环境 2.2数据库的建立 2.3SpringCloud的部署 第一步&#xff1a; 创建Maven项目 第二步&#xff1a;完善pom文件 第三步&#xff1a;创建两个子项目 第四步&#xff1a;声明项目依赖以及构建插件 第五步&#xf…

Leetcode 3224. Minimum Array Changes to Make Differences Equal

Leetcode 3224. Minimum Array Changes to Make Differences Equal 1. 解题思路2. 代码实现 题目链接&#xff1a;3224. Minimum Array Changes to Make Differences Equal 1. 解题思路 这一题思路上还是挺巧妙的&#xff0c;主要就是一个累计数组的思路。 对于任意两个数 …

cocos2d-x安装和项目

首先多方查找资料发现教程很简洁&#xff0c;发现对自己的操作方面没多大帮助&#xff0c;后来干脆去官网&#xff0c;好像也很简洁。基于这样一个原因&#xff0c;加上我首次碰cocos2d-x&#xff0c;决定记录一下整个流程&#xff0c;解决实际操作上的疑惑。 涉及的方面&…

PHP接口与性状的优雅应用

本文由 ChatMoney团队出品 在PHP编程中&#xff0c;接口是一种定义对象之间交互契约的强大工具。其核心目的不是让一个对象紧耦合地依赖另一个对象的特定身份&#xff0c;而是基于另一对象的能力进行交互。通过接口&#xff0c;我们的代码可以实现与依赖的解耦&#xff0c;从而…