Skip to content

Commit 65b91fd

Browse files
committed
Runtime: 1 ms (Top 91.93%) | Memory: 43.7 MB (Top 52.39%)
1 parent beaa0b2 commit 65b91fd

File tree

1 file changed

+47
-46
lines changed

1 file changed

+47
-46
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,53 @@
1+
// Runtime: 1 ms (Top 91.93%) | Memory: 43.7 MB (Top 52.39%)
2+
13
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+
}
1113

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+
}
3335

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;
3840

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+
}
4951

50-
5152
}
52-
}
53+
}

0 commit comments

Comments
 (0)