func nextGreaterElement(findNums []int, nums []int) []int { stack := make([]int, 0) // Keep a decease stack next := make(map[int]int) for _, i := range nums { for l := len(stack); l != 0 && stack[l-1] < i; l = len(stack) { top := stack[l-1] stack = stack[:l-1] next[top] = i } stack = append(stack, i) } res := make([]int, len(findNums)) for i := range res { if val, ok := next[findNums[i]]; ok { res[i] = val } else { res[i] = -1 } } return res }