退屈だなネクストPermutation
2783 ワード
意味のよくわからないテーマですが、配列reverseは復習する価値がありますよ
public class Solution {
public void nextPermutation(int[] num) {
//
if (num==null || num.length==0) return;
// X
int i=num.length-2;
while(i>=0 && num[i]>=num[i+1]){
i--;
}
// X num[j]
if(i>=0){
int j = num.length-1;
while(j>i && num[j]<=num[i]){
j--;
}
swap(num, i, j);
}
reverse(num, i+1, num.length-1);
}
public void swap(int[] num, int i, int j){
int t = num[i];
num[i]= num[j];
num[j] = t;
}
public void reverse(int[] num, int st, int end){
while(st<end){
swap(num, st, end);
st++;
end--;
}
}
}