File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -213,6 +213,40 @@ class Solution:
213213### Go:
214214
215215``` go
216+ // 版本一
217+ func nextGreaterElements (nums []int ) []int {
218+ // 拼接一个新的nums
219+ numsNew := make ([]int , len (nums) * 2 )
220+ copy (numsNew, nums)
221+ copy (numsNew[len (nums):], nums)
222+ // 用新的nums大小来初始化result
223+ result := make ([]int , len (numsNew))
224+ for i := range result {
225+ result[i] = -1
226+ }
227+
228+ // 开始单调栈
229+ st := []int {0 }
230+ for i := 1 ; i < len (numsNew); i++ {
231+ if numsNew[i] < numsNew[st[len (st)-1 ]] {
232+ st = append (st, i)
233+ } else if numsNew[i] == numsNew[st[len (st)-1 ]] {
234+ st = append (st, i)
235+ } else {
236+ for len (st) > 0 && numsNew[i] > numsNew[st[len (st)-1 ]] {
237+ result[st[len (st)-1 ]] = numsNew[i]
238+ st = st[:len (st)-1 ]
239+ }
240+ st = append (st, i)
241+ }
242+ }
243+ result = result[:len (result)/2 ]
244+ return result
245+ }
246+ ```
247+
248+ ``` go
249+ // 版本二
216250func nextGreaterElements (nums []int ) []int {
217251 length := len (nums)
218252 result := make ([]int ,length)
You can’t perform that action at this time.
0 commit comments