File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func nextGreaterElement( _ n: Int ) -> Int {
3
+ if n <= 10 {
4
+ return - 1
5
+ }
6
+
7
+ var num = n
8
+ var digits = [ Int] ( )
9
+ var maxDigit = - 1
10
+ var lastDigit = - 1
11
+ while num > 0 {
12
+ let digit = num % 10
13
+ lastDigit = digit
14
+ num = num / 10
15
+ digits. append ( digit)
16
+ if digit >= maxDigit {
17
+ maxDigit = digit
18
+ } else {
19
+ break
20
+ }
21
+ }
22
+
23
+ digits = digits. sorted ( )
24
+ var index = 0
25
+ while index < digits. count && digits [ index] <= lastDigit{
26
+ index += 1
27
+ }
28
+ if index == digits. count {
29
+ return - 1
30
+ }
31
+ var tail = digits [ index]
32
+ for i in 0 ..< digits. count {
33
+ num = num * 10
34
+ if i == index {
35
+ continue
36
+ } else {
37
+ tail = tail * 10 + digits[ i]
38
+ }
39
+
40
+ }
41
+ let result = num+ tail
42
+ return result > n && result <= Int32 . max ? result : - 1
43
+ }
44
+ }
You can’t perform that action at this time.
0 commit comments