当前位置:网站首页>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;
}
};
边栏推荐
猜你喜欢

混动产品助力,自主SUV市场格局迎来新篇章

C语言知识补充
![[免费专栏] Android安全之数据存储与数据安全【大集合】](/img/bc/9d71ff1de27156e11cde169022f4a1.png)
[免费专栏] Android安全之数据存储与数据安全【大集合】

国内市场上的 BI 软件到底有啥区别?

qq机器人账号不能发送群消息,被风控

Samsung's flagship discount is 1,800, Apple's discount is over 1,000, and the domestic flagship is only reduced by 500 to send beggars

史上最全架构师知识图谱(纯干货)

使用mysql:5.6和 owncloud 镜像,构建一个个人网盘

IDEA工具常用配置

对数学直观、感性的认知是理解数学、喜爱数学的必经之路,这本书做到了!
随机推荐
YOLO v3源码详解
毕昇编译器优化:Lazy Code Motion
winpe工具WEPE微PE工具箱
第三方bean使用ConfigurationProperties注解获取yml配置文件数据 & 获取yml配置文件数据的校验
发布sensor_msgs/Range数据
URLError: <urlopen error [Errno 11004] getaddrinfo failed>调用seaborn-data无法使用
三星旗舰优惠千八,苹果优惠过千,国产旗舰只降五百打发叫花子
[Free Column] Android Security for Peace Elite (FZ) APK Reverse Analysis
JSDN blog system
.NET现代应用的产品设计 - DDD实践
Win10系统80端口被占用的解决方法
[免费专栏] Android安全之ZIP文件目录遍历漏洞
关于加强专业学位研究生课程体系建设的意见
[免费专栏] Android安全之GDB动态调试APP
五种常用的排序方法
An overview of Office 365 Groups and how to create them
字节二面,差点倒在了MySQL上面
Intensive reading of the paper: VIT - AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
Sublime Text的安装过程记录
JMeter压测时如何在达到给定错误数量后停止测试

