Next Permutation LeetCode solution in Java

1
class Solution {
2
public void nextPermutation(int[] nums) {
3
// FIND peek+1
4
int nextOfPeak = -1;
5
for (int i = nums.length - 1; i > 0; i--) {
6
if (nums[i] > nums[i - 1]) {
7
nextOfPeak = i - 1;
8
break;
9
}
10
}
11

12
// Return reverse Array
13
if (nextOfPeak == -1) {
14
int start = 0;
15
int end = nums.length - 1;
16
while (start <= end) {
17
int temp = nums[start];
18
nums[start] = nums[end];
19
nums[end] = temp;
20
start++;
21
end--;
22
}
23
return;
24
}
25
// Find element greater than peek
26
int reversalPoint = nums.length - 1;
27
for (int i = nums.length - 1; i > nextOfPeak; i--) {
28
if (nums[i] > nums[nextOfPeak]) {
29
reversalPoint = i;
30
break;
31
}
32
}
33

34
// swap nextOfPeak && reversalPoint
35
int temp = nums[nextOfPeak];
36
nums[nextOfPeak] = nums[reversalPoint];
37
nums[reversalPoint] = temp;
38

39
// Reverse array from nextOfPeak+1
40
int start = nextOfPeak + 1;
41
int end = nums.length - 1;
42
while (start <= end) {
43
int temp1 = nums[start];
44
nums[start] = nums[end];
45
nums[end] = temp1;
46
start++;
47
end--;
48
}
49
}
50
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0