2
public void nextPermutation(int[] nums) {5
for (int i = nums.length - 1; i > 0; i--) {6
if (nums[i] > nums[i - 1]) {12
// Return reverse Array13
if (nextOfPeak == -1) {15
int end = nums.length - 1;16
while (start <= end) {17
int temp = nums[start];18
nums[start] = nums[end];25
// Find element greater than peek26
int reversalPoint = nums.length - 1;27
for (int i = nums.length - 1; i > nextOfPeak; i--) {28
if (nums[i] > nums[nextOfPeak]) {34
// swap nextOfPeak && reversalPoint35
int temp = nums[nextOfPeak];36
nums[nextOfPeak] = nums[reversalPoint];37
nums[reversalPoint] = temp;39
// Reverse array from nextOfPeak+140
int start = nextOfPeak + 1;41
int end = nums.length - 1;42
while (start <= end) {43
int temp1 = nums[start];44
nums[start] = nums[end];