Skip to content

Commit 5c209a9

Browse files
committed
Add solution 556
1 parent 265c6a5 commit 5c209a9

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

556_NextGreaterElement3.swift

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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+
}

0 commit comments

Comments
 (0)