LeetCode-503. 下一个更大元素 II【栈 数组 单调栈】

LeetCode-503. 下一个更大元素 II【栈 数组 单调栈】

  • 题目描述:
  • 解题思路一:单调栈。思路是利用循环数组来维护一个单调递减栈,遇到当前元素比栈顶元素大的就出栈,在出栈的时候维护出栈元素的结果(即当前元素是出栈元素的下一个更大元素)。循环数组可以用取余和复制数组实现,这里用的是取余。
  • 解题思路二:0
  • 解题思路三:0

题目描述:

给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。

数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1 。

示例 1:
输入: nums = [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数;
第二个 1 的下一个最大的数需要循环搜索,结果也是 2。

示例 2:
输入: nums = [1,2,3,4,3]
输出: [2,3,4,-1,4]

提示:
1 <= nums.length <= 104
-109 <= nums[i] <= 109

解题思路一:单调栈。思路是利用循环数组来维护一个单调递减栈,遇到当前元素比栈顶元素大的就出栈,在出栈的时候维护出栈元素的结果(即当前元素是出栈元素的下一个更大元素)。循环数组可以用取余和复制数组实现,这里用的是取余。

是一个单调递减栈

class Solution:def nextGreaterElements(self, nums: List[int]) -> List[int]:n = len(nums)stack = []res = [-1] * nfor i in range(2 * n):while stack and nums[stack[-1]] < nums[i % n]:res[stack.pop()] = nums[i % n]stack.append(i % n)return res

时间复杂度:O(n) 遍历两遍数组
空间复杂度:O(n) 栈

解题思路二:0


解题思路三:0


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

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

相关文章

异地现场工控设备,如何实现远程配置、调试?

南京某企业专注于工业物联领域&#xff0c;在相关项目中往往会在各个点位部署基于Linux系统的中控主机&#xff0c;实现各类物联设备信息的采集、汇总。但是&#xff0c;由于各点位分散多地&#xff0c;且数量达到了上百个&#xff0c;虽然中控主机具备4G物联网接入能力&#x…

代码随想录Day49——121. 买卖股票的最佳时机 122.买卖股票的最佳时机II

121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从…

Vue3-07-样式绑定-style绑定的写法总结

style 绑定的方式 1.html中直接一个属性一个属性的写&#xff1b; 2.直接绑定一个对象&#xff1b; 3.绑定一个包含多个样式对象的数组。style绑定样式的注意点 推荐使用 驼峰命名 规则来编写样式的名称&#xff0c;如 &#xff1a; fontSize:12px; 如果使用 中线分割的规则时…

医美行业-上游厂商的营销规模分析与测算

一、医美行业整体发展趋势&#xff1a;轻医美逐步占领市场&#xff0c;占比逐年增加&#xff0c;规模增速远超手术类医美 从2019年开始医美行业扩张速度放缓&#xff0c;2020年受疫情影响中国美容用户的医美行为有所减少&#xff0c;增速放缓至9.9%&#xff0c;随着疫情的好转及…

计算机组成原理-堆栈寻址

文章目录 堆栈寻址软堆栈vs硬堆栈小结 堆栈寻址 栈结构后进后出 软堆栈vs硬堆栈 硬堆栈用寄存器实现 软堆栈就是用内存实现 小结 入栈和出栈即栈顶元素位置的变化不同

C++11中std::async的使用详解

C11中的std::async是个模板函数。std::async异步调用函数&#xff0c;在某个时候以Args作为参数(可变长参数)调用Fn&#xff0c;无需等待Fn执行完成就可返回&#xff0c;返回结果是个std::future对象。Fn返回的值可通过std::future对象的get成员函数获取。一旦完成Fn的执行&…

【计算机网络】滑动窗口 流量控制 拥塞控制 概念概述

参考资料&#xff1a;计算机网络第八版-视频课程

LabVIEW实时建模检测癌细胞的异常

LabVIEW实时建模检测癌细胞的异常 癌症是全球健康的主要挑战之一&#xff0c;每年导致许多人死亡。世界卫生组织指出&#xff0c;不健康的生活方式和日益严重的环境污染是癌症发生的主要原因之一。癌症的发生通常与基因突变有关&#xff0c;这些突变导致细胞失去正常的增长和分…

记录 | 解决报错:version `GLIBC_2.25` not found

可以看出来应该是我们的 GLIBC 版本过低的原因造成的&#xff0c;下面我们用命令查看 glibc 的版本 strings /usr/lib64/libc.so.6 |grep GLIBC_或者strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_比如类似输出&#xff1a; GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC…

java--Map集合的遍历方式

1.Map集合的遍历方式之一&#xff1a;需要用的Map的如下方法 2.Map集合的遍历方式二&#xff1a;键值对 3.Map集合的遍历方式三&#xff1a;Lambda 需要用的Map的如下方法

C#学习相关系列之yield和return的区别

在C#中&#xff0c;yield和return都是用于控制程序流程的关键字&#xff0c;但它们的使用方式和目的有所不同。return关键字用于从当前的函数或方法返回&#xff0c;并可以返回一个值。 public int Add(int a, int b) { return a b; } 此时该函数返回的是ab的和&#x…

es6 中的箭头函数和普通函数有什么区别?

1、普通函数中的 this 总是指向调用它的那个对象&#xff0c; 箭头函数没有自己的 this,他的 this 永远指向其定义环境&#xff0c;任何方法都改变不了其指向&#xff0c;如 call()、bind()、apply()。&#xff08;正是因为它没有 this&#xff0c;所以也就不能用作构造函数&a…

mybatis-plus使用达梦数据库处理枚举类型报错的问题

使用mybatis-plus连接达梦数据库&#xff0c;枚举类型无法读取 枚举类&#xff1a; 实体&#xff1a; 数据库字段&#xff1a; mybatis-plus枚举包配置&#xff1a; 调用查询方法&#xff1a; List<QualityRuleTemplate> qualityRuleTemplates ruleTemplateServic…

可视化监控云平台/智能监控EasyCVR如何使用脚本创建ramdisk挂载并在ramdisk中临时运行

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防管理视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存…

cookies,sessionStorage 和 localStorage 的区别

sessionStorage 和 localStorage 是 HTML5 Web Storage API 提供的&#xff0c;可以方便的在 web 请求之间保存数据。有了本地数据&#xff0c;就可以避免数据在浏览器和服务器间不必要地来回传递。sessionStorage、localStorage、cookie 都是在浏览器端存储的数据&#xff0c;…

QT学习(更新中...)

QT学习 &#xff08;一&#xff09;QT简介编译器说明 &#xff08;二&#xff09;QT控件介绍 &#xff08;一&#xff09;QT简介 Qt是跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序&#xff0c;也可用于开发非GUI程序&#xff0c;比如控制台工具和服务器。Qt是面…

Python:NumPy

NumPy&#xff08;Numerical Python&#xff09;是一个用于科学计算和数据分析的Python库。它提供了一个强大的N维数组对象&#xff08;ndarray&#xff09;&#xff0c;用于存储和处理大型数据集&#xff0c;以及用于操作这些数组的各种工具。NumPy最初由Travis Olliphant于20…

Datawhale 12月组队学习 leetcode基础 day1 枚举

这是一个新的专栏&#xff0c;主要是一些算法的基础&#xff0c;对想要刷leedcode的同学会有一定的帮助&#xff0c;如果在算法学习中遇到了问题&#xff0c;也可以直接评论或者私信博主&#xff0c;一定倾囊相助 进入正题&#xff0c;今天咱们要说的枚举算法&#xff0c;这是个…

高压功率放大器的作用是什么

高压功率放大器是一种电子设备&#xff0c;其作用是将低电平的信号增强到高功率水平&#xff0c;以驱动要求高电压和电流的负载。它在各种应用中起着至关重要的作用&#xff0c;包括无线通信、医疗仪器、雷达系统、工业控制等领域。 高压功率放大器在无线通信中具有重要意义。在…

[common c/c++] 为什么使用 semaphore 的生产者消费者模型需要两个信号量

正文&#xff1a; 信号量没有触及上限则阻塞post的原语&#xff0c;同时信号量除了系统限制的信号量最大值之外并没有接口可以用来设置上限。因此在一个信号量场景下&#xff0c;生产者在 post 信号的时候是没有束缚的&#xff0c;如果不控制生产量的话&#xff0c;会导致系统…