publicvoidnextPermutation(int[] num){ for (int i = num.length - 2; i >= 0; i--) { if (num[i] < num[i + 1]) { for (int j = num.length - 1; j > i; j--) { if (num[j] > num[i]) { swap(num, i, j); reverse(num, i + 1, num.length - 1); return ; } } } } reverse(num, 0, num.length - 1); }
publicvoidswap(int[] array, int i, int j){ int temp = array[i]; array[i] = array[j]; array[j] = temp; } publicvoidreverse(int[] array, int start, int end){ for (int i = start; i <= (start + end) / 2; i++) swap(array, i, start + end - i); } }
近期评论