Next Greater Element III LeetCode solution in Java

1
class Solution {
2
public int nextGreaterElement(int n) {
3
char[] arr = (n + "").toCharArray();
4

5
int i = arr.length - 1;
6
while (i > 0) {
7
if (arr[i - 1] >= arr[i]) {
8
i--;
9
} else {
10
break;
11
}
12
}
13
if (i == 0) {
14
return -1;
15
}
16

17
int idx1 = i - 1;
18

19
int j = arr.length - 1;
20
while (j > idx1) {
21
if (arr[j] > arr[idx1]) {
22
break;
23
}
24
j--;
25
}
26

27
// Swapping
28
swap(arr, idx1, j);
29

30
// sorting
31
int left = idx1 + 1;
32
int right = arr.length - 1;
33
while (left < right) {
34
swap(arr, left, right);
35
left++;
36
right--;
37
}
38

39
String result = new String(arr);
40
long val = Long.parseLong(result);
41

42
return (val > Integer.MAX_VALUE ? -1 : (int) val);
43
}
44

45
void swap(char[] arr, int i, int j) {
46
char temp = arr[i];
47
arr[i] = arr[j];
48
arr[j] = temp;
49
}
50
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0