mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
Merge pull request #2809 from markwang1992/503-nextGreaterElements
503.下一个更大元素II增加Go版本一解法
This commit is contained in:
@ -213,6 +213,40 @@ class Solution:
|
||||
### Go:
|
||||
|
||||
```go
|
||||
// 版本一
|
||||
func nextGreaterElements(nums []int) []int {
|
||||
// 拼接一个新的nums
|
||||
numsNew := make([]int, len(nums) * 2)
|
||||
copy(numsNew, nums)
|
||||
copy(numsNew[len(nums):], nums)
|
||||
// 用新的nums大小来初始化result
|
||||
result := make([]int, len(numsNew))
|
||||
for i := range result {
|
||||
result[i] = -1
|
||||
}
|
||||
|
||||
// 开始单调栈
|
||||
st := []int{0}
|
||||
for i := 1; i < len(numsNew); i++ {
|
||||
if numsNew[i] < numsNew[st[len(st)-1]] {
|
||||
st = append(st, i)
|
||||
} else if numsNew[i] == numsNew[st[len(st)-1]] {
|
||||
st = append(st, i)
|
||||
} else {
|
||||
for len(st) > 0 && numsNew[i] > numsNew[st[len(st)-1]] {
|
||||
result[st[len(st)-1]] = numsNew[i]
|
||||
st = st[:len(st)-1]
|
||||
}
|
||||
st = append(st, i)
|
||||
}
|
||||
}
|
||||
result = result[:len(result)/2]
|
||||
return result
|
||||
}
|
||||
```
|
||||
|
||||
```go
|
||||
// 版本二
|
||||
func nextGreaterElements(nums []int) []int {
|
||||
length := len(nums)
|
||||
result := make([]int,length)
|
||||
|
Reference in New Issue
Block a user