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;
}
Also in Java:
- java 8 string to localdate
- java animated gif example
- inheritance setter and getter in java
- Unrecognized option: --version Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
- change number into array in java
- How to draw Bezier Curve in Android
- android hide and show bottom navigation
- java stack pop
- how to declare a linked list in java
- android studio keep device awake
- java create inputstream from string
- tower of hanoi program in java using recursion
- java 8 stream option
- java nested loop
- if statement java
- java double format
- count the number of words in a string java
- java observable
- how to interrupt a void java
- how to compare string in java
- string replace java
- java set value of arraylist
- how to install java 8 on terminal os
- java variable declared