题解 | 牛群的编号重排
牛群的编号重排
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--);
}
}
}
携程公司氛围 125人发布
