当前位置:网站首页>leetcode 503.下一个更大元素II 单调栈
leetcode 503.下一个更大元素II 单调栈
2022-08-09 18:05:00 【Alkali!】
题目描述
思路
利用单调栈的思想
- 这里要处理的数组是循环数组,但是输出的时候,还是输出原数组对应的答案,所以可以先进行处理,将原数组转化为一个伪循环数组。
即将数组 [ 0... n − 1 ] [0...n-1] [0...n−1]转化为数组[0…n-1,0…n-2] - 利用单调栈思想进行处理整个数组,从后往前处理,因为题目让求得是每个元素的 下一个更大元素
单调栈思想参考 - 将答案翻转,去掉尾部伪循环数组的部分,return结果
代码
#include<algorithm>
class Solution {
public:
vector<int> nextGreaterElements(vector<int>& nums) {
stack<int> s;
vector<int> res;
//将原数组后面添上循环的内容,变为线性伪循环数组
int length=nums.size();
for(int i=0;i<length-1;i++)
nums.push_back(nums[i]);
//从后往前遍历伪循环数组,利用单调栈的思想进行处理
for(int i=nums.size()-1;i>=0;i--)
{
while(!s.empty()&&s.top()<=nums[i])
s.pop();
if(s.empty()) //如果不存在,则输出 -1
res.push_back(-1);
else
res.push_back(s.top());
s.push(nums[i]);
}
//对结果的处理
reverse(res.begin(),res.end());
for(int i=0;i<length-1;i++)
res.pop_back();
return res;
}
};
边栏推荐
猜你喜欢

书单 | “推荐系统” 值得一读的五本书

Fully automated machine learning modeling!The effect hangs the primary alchemist!

C#/VB.NET: Extract text and pictures from PowerPoint document

毕昇编译器优化:Lazy Code Motion

智驾科技完成C1轮融资,此前2轮已融4.5亿元

Detailed explanation of VIT transformer

阿里云张新涛:支持沉浸式体验应用快速落地,阿里云云XR平台发布

jmeter - record script
![[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)](/img/86/3123f87d9b88d4fe424b2cf134eb62.png)
[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)

说了半天跨平台,今儿咱就来跨跨!(完结篇)——Kubenetes上手实践
随机推荐
释放数据价值的真正法宝,数据要素市场化开发迫在眉睫
01 -- 钉钉机器人
numpy中nan_to_num如何使用
[免费专栏] Android安全之APK动态方式逆向应用【三种Smali注入方法】
JSDN blog system
正则表达式(全)
发布sensor_msgs/Range数据
日本著名设计师三宅一生去世:产品曾被国人高价抢 乔布斯也是粉丝
全自动化机器学习建模!效果吊打初级炼丹师!
Mysql table structure change scheme comparison and analysis
winpe工具WEPE微PE工具箱
Uniapp 应用未读角标插件 Ba-Shortcut-Badge
MQTT X Web:在线的 MQTT 5.0 客户端工具
uniapp中使用网页录音并上传声音文件(发语音)——js-audio-recorder的使用【伸手党福利】
Qt 5.12 LTS 部署
毕昇编译器优化:Lazy Code Motion
【知识点合辑】numpy常用函数+jupyter小用法
[免费专栏] Android安全之Xposed插件开发【从零手把手带】教程
C的一些琐碎
安装搭建私有仓库 Harbor

