1
+ // Runtime: 1 ms (Top 91.93%) | Memory: 43.7 MB (Top 52.39%)
2
+
1
3
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
- }
4
+ public void nextPermutation (int [] nums ) {
5
+ // FIND peek+1
6
+ int nextOfPeak = -1 ;
7
+ for (int i = nums .length - 1 ; i > 0 ; i --) {
8
+ if (nums [i ] > nums [i - 1 ]) {
9
+ nextOfPeak = i - 1 ;
10
+ break ;
11
+ }
12
+ }
11
13
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
- }
14
+ // Return reverse Array
15
+ if (nextOfPeak == -1 ) {
16
+ int start = 0 ;
17
+ int end = nums .length - 1 ;
18
+ while (start <= end ) {
19
+ int temp = nums [start ];
20
+ nums [start ] = nums [end ];
21
+ nums [end ] = temp ;
22
+ start ++;
23
+ end --;
24
+ }
25
+ return ;
26
+ }
27
+ // Find element greater than peek
28
+ int reversalPoint = nums .length - 1 ;
29
+ for (int i = nums .length - 1 ; i > nextOfPeak ; i --) {
30
+ if (nums [i ] > nums [nextOfPeak ]) {
31
+ reversalPoint = i ;
32
+ break ;
33
+ }
34
+ }
33
35
34
- // swap nextOfPeak && reversalPoint
35
- int temp = nums [nextOfPeak ];
36
- nums [nextOfPeak ] = nums [reversalPoint ];
37
- nums [reversalPoint ] = temp ;
36
+ // swap nextOfPeak && reversalPoint
37
+ int temp = nums [nextOfPeak ];
38
+ nums [nextOfPeak ] = nums [reversalPoint ];
39
+ nums [reversalPoint ] = temp ;
38
40
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
- }
41
+ // Reverse array from nextOfPeak+1
42
+ int start = nextOfPeak + 1 ;
43
+ int end = nums .length - 1 ;
44
+ while (start <= end ) {
45
+ int temp1 = nums [start ];
46
+ nums [start ] = nums [end ];
47
+ nums [end ] = temp1 ;
48
+ start ++;
49
+ end --;
50
+ }
49
51
50
-
51
52
}
52
- }
53
+ }
0 commit comments