Skip to content

Commit bbe707b

Browse files
committed
f
1 parent e669e5e commit bbe707b

File tree

2 files changed

+42
-13
lines changed

2 files changed

+42
-13
lines changed

leetcode/solution/src/NextPermutation.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,24 @@ public class NextPermutation {
88
* 然后从升序中找到一个大于nums[i-1]的最小数与i-1交换,然后对升序整体revert为降序即可
99
*/
1010
public void nextPermutation(int[] nums) {
11-
int i = nums.length - 1;
11+
int i, j;
1212

13-
for ( ; i >= 0; i--) {
14-
if (i > 0 && nums[i - 1] < nums[i]) {
13+
for (i = nums.length - 1; i > 0; i--) {
14+
if (nums[i - 1] < nums[i]) {
1515
break;
1616
}
1717
}
1818

19-
if (i < 0) {
20-
revert(nums, 0, nums.length - 1);
21-
return;
22-
}
23-
24-
for (int j = nums.length - 1; j >= i; j--) {
25-
if (nums[j] > nums[i - 1]) {
26-
swap(nums, j, i - 1);
27-
revert(nums, i, nums.length - 1);
28-
break;
19+
if (i > 0) {
20+
for (j = i; j < nums.length; j++) {
21+
if (nums[j] <= nums[i - 1]) {
22+
break;
23+
}
2924
}
25+
swap(nums, i - 1, j - 1);
3026
}
27+
28+
revert(nums, i, nums.length - 1);
3129
}
3230

3331
private void swap(int[] nums, int left, int right) {

leetcode/src/Main.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,37 @@
22

33
public class Main {
44

5+
// 1 5 1
6+
public void nextPermutation(int[] nums) {
7+
int i = nums.length - 1, j;
8+
for (i = nums.length - 1; i > 0; i--) {
9+
if (nums[i - 1] < nums[i]) {
10+
break;
11+
}
12+
}
13+
if (i > 0) {
14+
for (j = i; j < nums.length; j++) {
15+
if (nums[j] <= nums[i - 1]) {
16+
break;
17+
}
18+
}
19+
swap(nums, i - 1, j - 1);
20+
}
21+
revert(nums, i, nums.length - 1);
22+
}
23+
24+
private void revert(int[] nums, int start, int end) {
25+
for ( ; start < end; start++, end--) {
26+
swap(nums, start, end);
27+
}
28+
}
29+
30+
private void swap(int[] nums, int i, int j) {
31+
int t = nums[i];
32+
nums[i] = nums[j];
33+
nums[j] = t;
34+
}
35+
536
public static void main(String[] args) {
637
}
738
}

0 commit comments

Comments
 (0)