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

代码随想录 单调栈 Ⅰ

739. 每日温度

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

思路:

这种求数组元素左右的第一个大于小于当前元素的类型,适合用单调栈来做。

单调栈的单调属性:单调递增,栈头到栈尾从小到大排列。

单调栈存放元素内容:第几天

遍历时的情况:当前天数的温度大于栈头天数温度时,将栈头元素出栈,当前当前天数与栈头天数的差值就是栈头天数的下一个温度出现所需天数,然后继续比较。当前天数温度小于等于栈头天数温度时,将元素入栈,遍历下一天。

class Solution:def dailyTemperatures(self, temperatures):result = [0 for _ in range(len(temperatures))]stack = [0]for i, v in enumerate(temperatures[1:]):if v <= temperatures[stack[-1]]:stack.append(i + 1)else:while stack and v > temperatures[stack[-1]]:result[stack[-1]] = i + 1 - stack[-1]stack.pop()stack.append(i + 1)return result

496. 下一个更大元素 I

nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。

给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是 -1 。

返回一个长度为 nums1.length 的数组 ans 作为答案,满足 ans[i] 是如上所述的 下一个更大元素 。

思路:依然是单调栈

class Solution:def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:stack = [nums2[0]]ans = [-1 for _ in range(len(nums1))]for i in nums2[1:]:if i <= stack[-1]:stack.append(i)else:while stack and i > stack[-1]:if stack[-1] in nums1:index = nums1.index(stack[-1])ans[index] = istack.pop()stack.append(i)return ans

 

相关文章:

代码随想录 单调栈 Ⅰ

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

C++返回引用

在本文中&#xff0c;您将学习如何在函数中通过引用返回值&#xff0c;以及如何在程序中有效地使用它。 在C 编程中&#xff0c;不仅可以通过引用将值传递给函数&#xff0c;还可以通过引用返回值。 示例&#xff1a;通过引用返回 #include <iostream> int c; int add…...

010:连续跌3天,同时这三天收盘价都在20日均线下,第四天上涨的概率--以京泉华为例

对于《连续跌三天&#xff0c;压第四天上涨的盈利计算》&#xff0c;我们可以继续优化这个策略&#xff0c;增加条件&#xff1a;同时三天都收盘在20日均线下。 因为我们上一篇《获取20日均线数据到excel表中》获得了20日均线数据&#xff0c;我们可以利用均线数据来编写新的脚…...

MATLAB与Python:优势与挑战

本文旨在探讨MATLAB与Python在特定领域内的使用情况&#xff0c;并分析两者之间的优势和挑战。 MATLAB和Python都是流行的编程语言&#xff0c;广泛应用于科学计算、数据分析和机器学习等领域。在某些领域&#xff0c;如航空航天工程、自动化和电子工程嵌入式系统开发等&#…...

CSP-J第二轮试题-2019年-1、2题

文章目录 参考&#xff1a;总结 [CSP-J2019] 数字游戏题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案答案2 [CSP-J 2019] 公交换乘题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示…...

深入理解 python 虚拟机:原来虚拟机是这么实现闭包的

深入理解 python 虚拟机&#xff1a;原来虚拟机是这么实现闭包的 在本篇文章当中主要从虚拟机层面讨论函数闭包是如何实现的&#xff0c;当能够从设计者的层面去理解闭包就再也不用死记硬背一些闭包的概念了&#xff0c;因为如果你理解闭包的设计原理之后&#xff0c;这些都是…...

【数据结构-哈希表 一】【原地哈希】:缺失的第一个正整数

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【原地哈希】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…...

【C++设计模式之迭代器模式】分析及示例

简介 迭代器模式是一种行为型设计模式&#xff0c;它提供了一种顺序访问聚合对象元素的方法&#xff0c;而又不需要暴露聚合对象的内部结构。迭代器模式通过将遍历算法封装在迭代器对象中&#xff0c;可以使得遍历过程更简洁、灵活&#xff0c;并且符合开闭原则。 描述 迭代…...

【代码随想录】LC 27. 移除元素

文章目录 前言一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、时间复杂度3、代码详解 三、知识风暴 前言 本专栏文章为《代码随想录》书籍的刷题题解以及读书笔记&#xff0c;如有侵权&#xff0c;立即删除。 一、题目 1、原题链接 27. 移除元素 2、题目描述 二、…...

crash工具分析dma设备内存踩踏(一)

背景介绍 我们的客户在利用我们提供的SDK参考方案开发相关产品时&#xff0c;在产品方案上进行一些基础老化测试时&#xff0c;极低概率出现kernel随机panic问题&#xff0c;由于场景复杂&#xff0c;无法单独针对特定模块或功能进行拆解来进行实验排查&#xff0c;只能基于已…...

C#上位机——根据命令发送

C#上位机——根据命令发送 第一步&#xff1a;设置窗口的布局 第二步&#xff1a;设置各个属性 第三步&#xff1a;编写各个模块之间的关系...

BEVFormer代码跑通

1 环境配置 1.1 环境安装 # 1 拉取源码 github加速代理https://ghproxy.com/ git clone https://github.com/fundamentalvision/BEVFormer.git# 2 创建虚拟环境 conda create -n bev python3.8 -y# 3 激活虚拟环境 conda activate bev# 4.1 安装torch,torchvision,torchaud…...

kafka安装

kafka安装 1 kafka概念 1.1 kafka介绍 kafka是最初有Linkedin公司开发的&#xff0c;是一个分布式&#xff0c;分区&#xff0c;多副本&#xff0c;多生产者&#xff0c;多订阅者&#xff0c;基于zookeeper协调的分布式日志系统。具有高吞吐量&#xff0c;可扩展性和可容错性…...

Mac上安装Java的JDK多版本管理软件jEnv

JDK的多版本管理软件主要有以下三种&#xff1a; jEnv jEnv 是一个命令行工具&#xff0c;可以帮助您管理和切换不同版本的 Java 环境。它可以让您在不同的项目之间轻松切换 Java 版本。您可以使用 jenv global 命令设置全局 Java 版本&#xff0c;也可以使用 jenv local 命令…...

linux常见命令以及jdk,tomcat环境搭建

目录 Is pwd cd touch cat echo vim 复制粘贴 mkdir rm cp jdk部署 1. yum list | grep jdk进行查找​编辑 2.安装​编辑 3.再次确认 4.判断是否安装成功 tomcat安装 1.下载压缩包&#xff0c;把压缩包上传至linux(可能需要yum install lrzsz) 2.解压缩unzip 压缩包名&…...

将表情存入数据库

概念&#xff1a; 表情是一种比较特殊的字符串&#xff0c;为unicode编码&#xff0c;unicode编码要存入数据库一般情况下&#xff0c;是存不了的&#xff0c;有两种解决方式&#xff0c;一种将数据表编码方式改为unicode编码方式&#xff0c;但是这种情况适用于功能刚开始设计…...

H桥级联型五电平三相逆变器Simulink仿真模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

后端解决跨域(极速版)

header(Access-Control-Allow-Origin: *); header(Access-Control-Allow-Methods:*); 代表接收全部的请求&#xff0c;"POST,GET"//允许访问的方式 指定域&#xff0c;如http://172.20.0.206//宝塔的域名&#xff0c;注意不是&#xff1a;http://wang.jingyi.icu等…...

数据结构与算法-前缀树

数据结构与算法-前缀树详解 1 何为前缀树 2 前缀树的代码表示及相关操作 1 何为前缀树 前缀树 又称之为字典树,是一种多路查找树,多路树形结构,是哈希树的变种&#xff0c;和hash效率有一拼&#xff0c;是一种用于快速检索的多叉树结构。 性质&#xff1a;不同字符串的相同…...

DirectX12_Windows_GameDevelop_3:Direct3D的初始化

引言 查看龙书时发现&#xff0c;第四章介绍预备知识的代码不太利于学习。因为它不像是LearnOpenGL那样从头开始一步一步教你敲代码&#xff0c;导致你没有一种整体感。如果你把它当作某一块的代码进行学习&#xff0c;你跟着敲会发现&#xff0c;总有几个变量是没有定义的。这…...

MikroTikPatch多架构支持:x86、ARM、MIPS平台完全攻略

MikroTikPatch多架构支持&#xff1a;x86、ARM、MIPS平台完全攻略 【免费下载链接】MikroTikPatch MikroTik RouterOS Patch Public Key and Generate License 项目地址: https://gitcode.com/gh_mirrors/mikr/MikroTikPatch MikroTikPatch是一款针对MikroTik RouterOS的…...

如何用Python自动化拆分CATIA多实体零件:终极PyCATIA教程

如何用Python自动化拆分CATIA多实体零件&#xff1a;终极PyCATIA教程 【免费下载链接】pycatia python module for CATIA V5 automation 项目地址: https://gitcode.com/gh_mirrors/py/pycatia 在CATIA V5的零件设计中&#xff0c;工程师经常遇到一个常见挑战&#xff1…...

ARM GICv3虚拟化中断机制与优化实践

1. GICv3虚拟化中断处理机制概述在ARM虚拟化架构中&#xff0c;通用中断控制器(GIC)扮演着关键角色。GICv3作为第三代架构&#xff0c;引入了全面的虚拟化支持&#xff0c;使得虚拟机能够高效处理中断而无需Hypervisor的频繁介入。其核心设计理念是通过虚拟CPU接口(vCPU Interf…...

如何用XiaoMusic让小爱音箱变身你的私人音乐管家:5个超实用场景解析

如何用XiaoMusic让小爱音箱变身你的私人音乐管家&#xff1a;5个超实用场景解析 【免费下载链接】xiaomusic 使用小爱音箱播放音乐&#xff0c;音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 还在为小爱音箱只能播放特定平台的音…...

OpenCorpo开源企业情报工具:从数据抓取到关系图谱构建实战

1. 项目概述&#xff1a;当开源情报遇上企业数据最近在开源情报&#xff08;OSINT&#xff09;的圈子里&#xff0c;一个名为 OpenCorpo 的项目引起了我的注意。它不是一个传统意义上的商业数据库&#xff0c;而是一个由社区驱动的、旨在聚合和解析全球企业公开信息的工具集。简…...

AI系统提示词安全防护:从泄露风险到后端代理实战

1. 项目概述&#xff1a;当系统提示词不再“秘密”最近在AI应用开发圈里&#xff0c;一个名为“asgeirtj/system_prompts_leaks”的项目引起了我的注意。这名字直译过来就是“系统提示词泄露”&#xff0c;听起来就有点意思。简单来说&#xff0c;这个项目收集并展示了在各种AI…...

不止于抓包:用Fiddler做移动端API调试和性能优化的5个实战技巧

不止于抓包&#xff1a;用Fiddler做移动端API调试和性能优化的5个实战技巧 当你已经能够熟练使用Fiddler进行基础抓包操作后&#xff0c;这款工具的真正价值才刚刚开始显现。许多开发者仅仅将其视为一个"网络请求查看器"&#xff0c;却忽略了它在移动端开发全流程中的…...

实测Taotoken多模型聚合服务的响应延迟与稳定性观感

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 实测Taotoken多模型聚合服务的响应延迟与稳定性观感 1. 引言 在将大模型能力集成到实际应用的过程中&#xff0c;开发者除了关注模…...

本地AI智能体框架NagaAgent:基于开源大模型的规划与工具调用实践

1. 项目概述&#xff1a;一个被低估的本地AI智能体框架最近在折腾本地大模型应用&#xff0c;特别是想搞点能自己跑起来的智能体&#xff08;Agent&#xff09;&#xff0c;发现了一个挺有意思但讨论度不高的项目——RTGS2017/NagaAgent。乍一看这个标题&#xff0c;可能会觉得…...

如何高效管理Zotero插件:一站式插件市场完整指南

如何高效管理Zotero插件&#xff1a;一站式插件市场完整指南 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing, installing, and reviewing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons 还在为…...