当前位置:网站首页>单调栈-503. 下一个更大元素 II
单调栈-503. 下一个更大元素 II
2022-07-03 08:24:00 【later_rql】
1.解题思路
首先,确定本题的解题思路,题目要求记录每个数右边的大于该数的数值,实质就是向右找最近的一个大于当前数的值,而且题目说明该数组是循环数组。
确定使用单调栈来解决本题:
单调栈的使用场景:通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。

2.难点
本题稍加一点难度,就是将数组变成的循环数组,只需要对其做取余操作即可。
3.代码
public int[] nextGreaterElements(int[] nums) {
int len=nums.length;
int[] result=new int[nums.length];
for (int i=0;i<result.length;i++){
result[i]=-1;
}
Stack<Integer> stack = new Stack<>();
stack.push(0);
for (int i=1;i<len*2;i++){
while (!stack.isEmpty() && nums[(i%len)]>nums[stack.peek()]){
if (result[stack.peek()]==-1){
result[stack.peek()]=nums[i%len];
}
stack.pop();
}
stack.push(i%len);
}
return result;
}
4.性能
- 时间复杂度:O(n)
- 空间复杂度:O(n)
边栏推荐
猜你喜欢
随机推荐
Golang's range
Kwai 20200412 recruitment
Swagger document configuration
Cloudcompare learning (1) - cloudcompare compilation and common plug-in implementation
Unity editor expansion - draw lines
Base64编码简介
Shader foundation 01
GIS实战应用案例100篇(七十八)-多规合一数据库设计及数据入库
Map的实现类的顺序性
十六进制编码简介
Cesium service deployment, and import and display local 3dfiles data
Youyou1 of xlua knapsack system
Minimap plug-in
简易入手《SOM神经网络》的本质与原理
animation
Osgearth north arrow display
Jupyter remote server configuration and server startup
Dealing with duplicate data in Excel with xlwings
Mall management system of database application technology course design
数据库应用技术课程设计之商城管理系统









