Find Next Permutation
Medium
A permutation of an array of integers is an arrangement of its elements into a sequence or linear order.
For example, for arr = [1,2,3]
, the following are all the permutations:
[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]
The next permutation of an array is the next lexicographically greater permutation of its integers. More formally, if all permutations are sorted in ascending lexicographical order, the next permutation is the one that follows it in that order.
If no such arrangement is possible (i.e., the array is in descending order), rearrange the array as the smallest possible order (sorted in ascending order).
arr = [1,2,3]
is [1,3,2]
.arr = [2,3,1]
is [3,1,2]
.arr = [3,2,1]
is [1,2,3]
(since no larger permutation exists).Given an array of integers nums
, find the next permutation of nums
.
nums
directly).Input:
nums = [1,2,3]
Output:
[1,3,2]
Input:
nums = [3,2,1]
Output:
[1,2,3]
Input:
nums = [1,1,5]
Output:
[1,5,1]
Input:
nums = [5]
Output:
[5] # No change
Input:
nums = [9,8,7,6,5,4,3,2,1]
Output:
[1,2,3,4,5,6,7,8,9] # Reset to lowest order
1 <= nums.length <= 100
0 <= nums[i] <= 100
https://leetcode.com/problems/next-permutation/
Loading component...
Loading component...
Main Function is not defined.
INPUT: nums = [1,2,3]
OUTPUT: [1,3,2]
public static void nextPermutation(int[] nums) {
int n = nums.length;
int i = n - 2;
while (i >= 0 && nums[i] >= nums[i + 1]) {
while (nums[i] >= nums[i + 1]) {
i--;
}//Loop End
if (i >= 0) {
int j = n - 1;
while (nums[j] <= nums[i]) {
j--;
}//Loop End
swap(nums, i, j);
}//If End
reverse(nums, i + 1, n - 1);
}function end
Utility Function is not required.