leeetcode热题100.每日温度

作者:晓宜
🌈🌈🌈
个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者
🌙🌙🌙
分享单调栈的用法,有顺序和逆序两种解法,希望有所帮助
❤️❤️❤️
你的关注是我前进的动力😊

Problem: 739. 每日温度

文章目录

  • 题目
  • 思路
  • 复杂度

题目

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

示例 1:

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

示例 2:

输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]

示例 3:

输入: temperatures = [30,60,90]
输出: [1,1,0]

思路

我们有两种解法,分别是顺着遍历和倒着遍历,

先来看顺着遍历,我们从左到右遍历所有字符串,将他们加入到栈中;
我们要明白一点,就是当前栈顶元素是已经遍历过的的最近的元素,我们将它的值和此时遍历到的值比较,如果说当前栈顶元素小于现在的遍历的元素,对于当前栈顶元素而言,就找到了离他最近的点的元素,我们更新对应的ans值就可以了。
如果说当前元素小于等于栈顶元素,说明栈顶元素不需要更新,直接跳过就行

class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:n = len(temperatures)ans = [0] * nstack = []for i in range(n):while stack!=[] and temperatures[stack[-1]] < temperatures[i]:index = stack[-1]stack.pop()ans[index] = i-indexstack.append(i)return ans

再来看看倒序遍历
倒序遍历相对而言就更加容易理解,我们本质是从后往前维护当前索引的左边的所有元素最大值如果栈顶元素小于当前元素,我们让他出栈,栈中只能保留大于当前元素的元素索
如果不为空,说明找到了最近的更大元素,更新答案即可,否则,前面就没有比当前元素更大的元素;最后将当前元素入栈

class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:n = len(temperatures)ans = [0] * nstack = []for i in range(n-1,-1,-1):while stack and temperatures[stack[-1]]<=temperatures[i]:stack.pop()if stack:ans[i] = stack[-1] - istack.append(i)return ans

复杂度

时间复杂度:

O ( n ) O(n) O(n)

空间复杂度:

O ( n ) O(n) O(n)

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

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

相关文章

linux debian运行pip报错ssl tsl module in Python is not available

写在前面 ① 在debian 8上升级了Python 3.8.5 ② 升级了openssl 1.1.1 问题描述 在运行pip命令时提示如下错误 pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.尝试了大神推荐的用如下方法重新编译安装python,发…

企业微信知识库:从了解到搭建的全流程

你是否也有这样的疑惑&#xff1a;为什么现在的企业都爱创建企业微信知识库&#xff1f;企业微信知识库到底有什么用&#xff1f;如果想要使用企业微信知识库企业应该如何创建&#xff1f;这就是我今天要探讨的问题&#xff0c;感兴趣的话一起往下看吧&#xff01; | 为什么企业…

网站业务对接DDoS高防

准备需要接入的网站域名清单&#xff0c;包含网站的源站服务器IP&#xff08;仅支持公网IP的防护&#xff09;、端口信息等。所接入的网站域名必须已完成ICP备案。如果您的网站支持HTTPS协议访问&#xff0c;您需要准备相应的证书和私钥信息&#xff0c;一般包含格式为.crt的公…

游戏赛道新机会:善用数据分析,把握游戏赛道广告变现良机 | TOPON变现干货

12月10日&#xff0c;由罗斯基联合TopOn、钛动科技共同主办的《游戏赛道新机会》主题系列沙龙在武汉举办。活动邀请了国内外多家业内知名公司的负责人到场分享&#xff0c;现场嘉宾分别从自己擅长的领域出发&#xff0c;通过数据分析&#xff0c;案例复盘等多个维度方向进行讲解…

C++超市商品管理系统

一、简要介绍 1.本项目为面向对象程序设计的大作业&#xff0c;基于Qt creator进行开发&#xff0c;Qt框架版本6.4.1&#xff0c;编译环境MINGW 11.2.0。 2.项目结构简介&#xff1a;关于系统逻辑部分的代码的头文件在head文件夹中&#xff0c;源文件在s文件夹中。与图形界面…

JavaScript代理模式之四大代理

JavaScript设计模式中有一种模式为代理模式 事件代理 事件代理是代理中最常见的一种&#xff0c;也是一道实打实的高频面试题&#xff0c;它的场景是一个父元素下有多个子元素。 考虑到事务具有冒泡性&#xff0c;当我们点击a标签的时候&#xff0c;会冒泡到父级。从而被监听…

基于Java仓库管理系统设计与实现(源码+部署文档+论文)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

Vue 获取当前页面URL和进行页面重定向

前言 在Vue开发中,有时候我们需要获取当前页面的URL或者进行页面重定向。本文将介绍如何使用window.location对象来获取当前页面的URL以及常用的重定向方法。 window.location的详解 window.location对象提供了许多属性,可以用于获取当前页面的URL的不同部分。下面是一些常…

剑指Offer题目笔记20(在数组范围内二分查找)

面试题72&#xff1a; 问题&#xff1a; ​ 输入一个非负整数&#xff0c;计算它的平方根。 解决方案&#xff1a; 使用二分查找。一个数x的平方根一定小于或等于x&#xff0c;同时&#xff0c;除了0之外的所有非负整数的平方根都大于等于1&#xff0c;故该数的平方根在1到x…

Python数据库编程全指南SQLite和MySQL实践

1. 安装必要的库 首先&#xff0c;我们需要安装Python的数据库驱动程序&#xff0c;以便与SQLite和MySQL进行交互。对于SQLite&#xff0c;Python自带了支持&#xff1b;而对于MySQL&#xff0c;我们需要安装额外的库&#xff0c;如mysql-connector-python。 # 安装 MySQL 连接…

数据库中的约束纯干货——主键约束

目录 &#xff08;一&#xff09;特点&#xff1a; &#xff08;二&#xff09;添加主键约束 2.1格式&#xff1a; 2.2举例&#xff1a; 2.3建立表级约束&#xff1a; 2.4建立表后增加主键约束 &#xff08;三&#xff09;复合主键 3.1格式&#xff1a; 3.2举例&#…

每日一题 --- 快乐数[力扣][Go]

快乐数 题目&#xff1a;202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到…

Golang- 邮件服务,发送邮件

依赖 go get -u github.com/jordan-wright/email文档 文档 示例代码 package utilimport ("ToDoList/global""crypto/tls""fmt""github.com/jordan-wright/email""net/smtp" ) /* 配置 email:port: 465from: xxxqq.comh…

Pocket 2荧光拍摄的几个有趣玩法

荧光是现象&#xff0c;当某种常温物质经某种波长的入射光&#xff08;通常是或&#xff09;照射&#xff0c;吸收光能后进入&#xff0c;并且立即退激发并发出出射光&#xff08;通常波长比入射光的波长&#xff0c;原先看不见的短波长紫外线&#xff0c;变成在可见光波段的可…

Oracle 一键安装脚本实操合集,持续更新中!

Oracle 一键安装脚本&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库 脚本第三代支持 N 节点一键安装&#xff0c;不限制节点数&#xff01…

JAVA的NIO和BIO底层原理分析

文章目录 一、操作系统底层IO原理1. 简介2. 操作系统进行IO的流程 二、BIO底层原理1. 什么是Socket2. JDK原生编程的BIO 三、Java原生编程的NIO1. 简介2. NIO和BIO的主要区别3. Reactor模式4. NIO的三大核心组件5. NIO核心源码分析 一、操作系统底层IO原理 1. 简介 IO&#x…

django模板下,vue的使用(前后端不分离)

目录 关于djangovue的结合使用一、在你的templates中引入vue.js二、关于vue与django模板变量的冲突问题三、示例结语 关于djangovue的结合使用 网上的相关教程基本上都是部署node.js,npm安装vue&#xff0c;生成vue项目&#xff0c;然后将vue项目部署至django&#xff0c;这些…

font-spider压缩文字

FZLanTingHei-DB-GBK是我引入的字体包名字 1.安装依赖 建议全局安装但是要注意npm配置 我配成了_globel 真是沙雕 npm install font-spider -g2. 在static文件夹新增一个文件夹font-spider 同时在font-spider文件夹里面新增index.css和index.html index.css font-face {f…

产品推荐 | 基于华为海思ARM+Xilinx FPGA双核的8路SDI高清视频图像处理平台

一、板卡概述 PCIE703 是我司自主研制的一款基于 PCIE 总线架构的高性能综 合视频图像处理平台&#xff0c;该平台采用 Xilinx 的高性能 Kintex UltraScale 系列 FPGA 加上华为海思的高性能视频处理器来实现。 华为海思的 HI3531DV200 是一款集成了 ARM A53 四核处理 器性能强…

Java设计模式—备忘录模式(快照模式)

定义 备忘录模式提供了一种状态恢复的实现机制&#xff0c;使得用户可以方便地回到一个特定的历史步骤&#xff0c;当新的状态无效或者存在问题时&#xff0c;可以使用暂时存储起来的备忘录将状态复原&#xff0c;很多软件都提供了撤销&#xff08;Undo&#xff09;操作&#…