java prev permutation
public static boolean prev_permutation(int[] arr) {
int len = arr.length;
int i = len - 1;
// 1. find largest i where arr[i - 1] > arr[i]
while (i > 0) {
if (arr[i - 1] > arr[i]) break;
i--;
}
if (i <= 0) return false;
// 2. find largest j where arr[i - 1] > arr[j] and j >= i
int j = len - 1;
while (j >= i) {
if (arr[i - 1] > arr[j]) break;
j--;
}
// 3. swap elements between arr[i-1] and arr[j]
swap(i - 1, j, arr);
// 4. reverse elements from i to end of array
len--;
while (i < len) {
swap(i, len, arr);
len--;
i++;
}
return true;
}
public static void swap(int x, int y, int[] arr) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
Are there any code examples left?
New code examples in category Java
-
Java 2022-03-27 21:35:04 Sort string array in case insensitive order and case sensitive order java
-
Java 2022-03-27 21:25:10 java -jar -l resources\es.porperties -i ejemplo.txt -o inject.bin
-
Java 2022-03-27 21:20:21 Debug & Fix a 2-Dimensional Array Java Console Application
-
Java 2022-03-27 20:40:19 TreeSet headSet(E toElement) method in java
-
Java 2022-03-27 19:30:06 close keyboard android
-
Java 2022-03-27 19:20:40 java measure execution time
-
Java 2022-03-27 19:10:06 how to add cardview support in android studio
-
Java 2022-03-27 18:55:08 android studio lower case letters on a button