503. 下一个更大元素 II

下一个更大元素 II

解法一: 单调栈

go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func nextGreaterElements(nums []int) []int {
n := len(nums)
ans := make([]int, n)
for i := 0; i < n; i++ {
ans[i] = -1
}
stack := []int{}
for i := 0; i < (n << 1); i++ {
for len(stack) > 0 && nums[stack[len(stack)-1]%n] < nums[i%n] {
ans[stack[len(stack)-1]%n] = nums[i%n]
stack = stack[:len(stack)-1]
}
stack = append(stack, i)
}
return ans
}
作者

wuhunyu

发布于

2024-06-24

更新于

2025-01-15

许可协议