| 1234567891011121314151617181920 | 
							- func nextGreaterElement(n int) int {
 
- 	runes := []rune(strconv.Itoa(n))
 
- 	for n = len(runes) - 2; 0 <= n && runes[n+1] <= runes[n]; n-- {
 
- 	}
 
- 	if n == -1 {
 
- 		return n
 
- 	}
 
- 	i := len(runes) - 1
 
- 	for ; runes[i] <= runes[n]; i-- {
 
- 	}
 
- 	runes[n], runes[i] = runes[i], runes[n]
 
- 	for n, i = n+1, len(runes)-1; n < i; n, i = n+1, i-1 {
 
- 		runes[n], runes[i] = runes[i], runes[n]
 
- 	}
 
- 	n, _ = strconv.Atoi(string(runes))
 
- 	if math.MaxInt32 < n {
 
- 		return -1
 
- 	}
 
- 	return n
 
- }
 
 
  |