题解 | 牛群的编号重排
牛群的编号重排
https://www.nowcoder.com/practice/220a216469c14a52b4eb6709e041feb1
import java.util.*; public class Solution { // 4, 2, 3, 1 // 4, 2, 1, 3 public int[] nextPermutation (int[] cows) { final int n = cows.length; if (n == 1) { return cows; } int i = n - 2; // find --_-- 凹 while (i >= 0 && cows[i] <= cows[i + 1]) { --i; } if (i >= 0) { int j = n - 1; // find first cow le cows[i] while (j >= 0 && cows[j] >= cows[i]) { --j; } swap(cows, i, j); } reverse(cows, i + 1, n - 1); return cows; } private void swap(final int[] a, final int i, final int j) { final int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } private void reverse(final int[] a, int l, int r) { while (l < r) { swap(a, l++, r--); } } }