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

LeetCode 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]

思路:

单调栈解决的问题是从左或者从右开始比这个元素大的或者小的第一个元素的问题
该题目的实现思路是,创建一个单调栈,使用存放单调递增的元素下标(记住单调栈是存放的下标,并不是元素)
创建一个result数组,并初始化为0,后边会说为什么初始化为0,
result数组用来存放每个元素相较于右边第一个比他大的元素的距离
具体实现过程:
首先将第一个元素的下标入栈,接下来在for循环中,从第二个元素开始,如果当前的元素小于等于栈顶的元素
那么需要将当前的元素下标入栈,相反,如果大于的话,需要将当前栈顶的下标出栈,并且将栈顶保存的下标对应到result数组中
并使用当前的下标i将去栈顶存的下标st.top(),存放到result对应位置上,最后再将栈顶元素出栈,
出站后还需要继续判断,当前元素和栈顶的关系,如果还是大于,那么继续执行刚刚的操作,如果小于等于,那么入栈
有可能会出现栈中还有元素,但是T数组以及遍历完了,这种情况栈中的元素全部是单调递增的,后边没有比他更大得了
因此就用到了初始化的result数组为0了。

class Solution {
public:vector<int> maxlength(vector<int>& T) {stack<int> st;vector<int> result(T.size(),0);st.push(0);for (int i = 1; i < T.size();i++) {if (T[i] <= T[st.top()]) {st.push(i);}else {while (!st.empty()&& T[i] > T[st.top()]) {result[st.top()] = i - st.top();st.pop();}st.push(i);}}return result;}
};int main() {vector<int> temperatures = { 73, 74, 75, 71, 69, 72, 76, 73 };Solution ss;vector<int> result= ss.maxlength(temperatures);for (vector<int>::iterator pos = result.begin(); pos != result.end();pos++) {cout << *pos <<" ";}return 0;
}

相关文章:

LeetCode 739 每日温度

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

介绍几种常见的运维发布策略

随着Devops的发展&#xff0c;为了提高运维发布的成功率&#xff0c;探索出了多种发布策略。本文简单介绍几种常见发布策略, 以及它们适用的场景和优缺点。 第一种&#xff0c;停机发布 这是最早的一种发布策略&#xff0c;停机发布会在发布以前关闭服务&#xff0c;停止用户…...

C++ QT QDBus进阶用法。

以下是使用QDBus的高级用法示例代码&#xff1a; 1. 使用DBus的异步调用机制&#xff1a; #include <QCoreApplication> #include <QDebug> #include <QDBusConnection> #include <QDBusPendingCallWatcher> class MyDBusObject : public QObject …...

2023-5-26 LeetCode每日一题(二进制矩阵中的最短路径)

2023-05-29每日一题 一、题目编号 1091. 二进制矩阵中的最短路径二、题目链接 点击跳转到题目位置 三、题目描述 给你一个 n x n 的二进制矩阵 grid 中&#xff0c;返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径&#xff0c;返回 -1 。 二进制矩阵中的 畅通路径…...

博客系统后端设计(七) - 实现显示用户信息与注销功能

文章目录 1. 显示用户信息1.1 约定前后端交互接口1.2 修改列表页的前段代码1.3 实现详情页的后端代码1.4 实现详情页的前端代码 2. 注销2.1 确定前后端交互接口2.2 实现后端代码2.3 修改前端代码 1. 显示用户信息 此处的用户名是写死的&#xff0c;我们希望的是此处是能够动态生…...

Spring5 学习笔记

前置知识&#xff1a; 掌握Java基础知识&#xff08;特别是反射&#xff09;掌握Java注解掌握XML掌握Maven Spring5学习笔记 1、Spring概述1.1、简介1.2、优点1.3、组成1.4、拓展 2、IOC理论推导2.1、分析实现2.2、IOC本质 3、HelloSpring3.1、导入jar包3.2、编写代码3.3、思考…...

leetcode--分隔链表(java)

分割链表 leetcode 86 分割链表 &#xff08;中等&#xff09;解题思路&#xff1a;链表专题 leetcode 86 分割链表 &#xff08;中等&#xff09; leetcode 86 分割链表 原题链接&#xff0c;可以直接测试 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进…...

使用 AD8232 ECG 传感器和 ESP32 进行基于物联网的 ECG 监测

这篇文章是使用 AD8232 ECG 传感器和 ESP32 进行基于物联网的 ECG 监测。可以从世界任何地方在线观察来自患者心脏的心电图信号。 目录 概述 什么是心电图? 心电图的医疗用途 AD8232 心电图传感器...

【Linux初阶】基础IO - 文件操作(使用系统接口实现) | vim批量注释代码

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;重新理解文件和文件操作&#xff0c;C语言实现的简单文件操作&#xff0c;文本初始权限&#xff0c;系统接口介…...

网络安全之信息收集

​​​第一部分&#xff1a;被动信息收集 1、简介 ​ 在信息收集这块区域&#xff0c;我将其分为两部分&#xff1a;第一部分即被动信息收集&#xff0c;第二部分即主动信息收集。 ​ 对于标准的渗透测试人员来说&#xff0c;当明确目标做好规划之后首先应当进行的便是信息收…...

ModuleNotFoundError: No module named ‘_lzma‘

安装torchvision报错&#xff1a;ModuleNotFoundError: No module named ‘_lzma’ 参考文章&#xff1a;https://zhuanlan.zhihu.com/p/404162713 解决思路&#xff1a;用backports.lzma代替_lzma包 解决步骤&#xff1a;(ubuntu系统) 安装依赖sudo apt-get install liblzma-d…...

标点符号相关的英语单词

Comma - 逗号 Period - 句号 Question mark - 问号 Exclamation mark - 感叹号 Semicolon - 分号 Colon - 冒号 Quotation marks - 引号 Parentheses - 括号 Brackets - 方括号 Hyphen - 连字符 Dash - 破折号 Ellipsis - 省略号 Apostrophe - 省略符号 Slash - 斜杠 Backslash…...

MyBatis的部分知识点

一、resultMap的constructor配置方式 <resultMap id"" type""> <constructor> <!--主键--> <idArg column"id" javaType"_int"/> <!--其他列--> …...

PAT A1089 Insert or Merge

1089 Insert or Merge 分数 25 作者 CHEN, Yue 单位 浙江大学 According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input…...

研发工程师玩转Kubernetes——创建一个测试容器

测试容器并不是什么都没有的容器&#xff0c;只是它没有我们期望的常驻进程。我们常用它来做一些测试。 举个例子&#xff0c;在《研发工程师玩转Kubernetes——自动扩缩容》中我们使用本地wrk进行了压力测试。如果我们希望进入容器手工调用wrk&#xff0c;该怎么做呢&#xff…...

FPGA - 7系列 FPGA内部结构之CLB -03- CLB相关原语以及应用

前言 本文节选UG474的第二章&#xff0c;进行整理翻译。CLB资源被FPGA综合工具自动有效地使用&#xff0c;不需要任何特殊的FPGA专用编码。一些HDL编码建议和技术可以帮助优化设计以获得最大效率。 设计检查清单 这些指南是为有效使用7系列CLB的设计建议提供的快速核对表。7…...

什么是日志关联

什么是日志关联 日志关联是一种分析来自不同源的日志数据以识别事件模式的技术。它用于更好地了解网络的活动&#xff0c;从而有效地保护网络免受漏洞和威胁。 日志关联是日志管理过程的关键部分。收集和存储日志后&#xff0c;集中式日志服务器将执行分析以检测特定事件。日…...

打家劫舍问题 Python题解

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…...

【JavaSE】Java基础语法(十八):接口

文章目录 1. 接口的概述2. 接口的特点3. 接口的成员特点4. 类和接口的关系5. 抽象类和接口的关系 1. 接口的概述 接口就是一种公共的规范标准&#xff0c;只要符合规范标准&#xff0c;大家都可以通用。Java中接口存在的两个意义 用来定义规范用来做功能的拓展 2. 接口的特点…...

SVD求解两组多维点之间的欧式变换矩阵,及halcon代码实现

之前研究了二维点的仿射变换&#xff0c;用解矩阵的方式求解了两组二维点之间的变换矩阵。 学习了下SVD&#xff0c;看到可以用SVD求解两组多维点之间的欧式变换矩阵&#xff0c;当然也是个最优化问题。 这里的变换只有平移和旋转&#xff0c;没有缩放。 一、先说结论&#…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...