1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| func nextGreaterElements(nums []int) []int { n := len(nums) var stack []int ans := make([]int, n) for i := range ans { ans[i] = -1 }
for i := 0; i < 2*n-1; i++ { top := len(stack) for top > 0 && nums[stack[top-1]] < nums[i%n] { ans[stack[top-1]] = nums[i%n] stack = stack[:top-1] top = len(stack) } stack = append(stack, i%n) } return ans }
|