forked from xiaoyaoworm/Leetcode-java
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path31_nextPermutation.java
39 lines (36 loc) · 1005 Bytes
/
31_nextPermutation.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class Solution {
public void nextPermutation(int[] nums) {
if(nums == null || nums.length <= 1) return;
int i = nums.length -1;
while(i>=1){
if(nums[i-1] < nums[i]){
break; // find i-1
}
i--;
}
if(i == 0){ //54321
swap(nums, 0, nums.length-1); //12345
} else{
int j = nums.length-1;
while(j > i-1){
if(nums[j] > nums[i-1]){
int temp = nums[j];
nums[j] = nums[i-1];
nums[i-1] = temp;
break;
}
j--;
}
swap(nums, i, nums.length-1);
}
}
public void swap(int[] nums, int start, int end){
while(start< end){
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
start++;
end--;
}
}
}