LeetCode has a Medium coding Problem in Its’ Algorithm Section “Next Permutation Leetcode”. Today We are going to solve this problem. LeetCode Link of the Problem is HERE.

**Question**

A **permutation** of an array of integers is an arrangement of its members into a sequence or linear order.

- For example, for
`arr = [1,2,3]`

, the following are considered permutations of`arr`

:`[1,2,3]`

,`[1,3,2]`

,`[3,1,2]`

,`[2,3,1]`

.

The **next permutation** of an array of integers is the next lexicographically greater permutation of its integer. If not feasible, reorganize the array in the lowest order possible (i.e., sorted in ascending order).

- For example, the next permutation of
`arr = [1,2,3]`

is`[1,3,2]`

. - Similarly, the next permutation of
`arr = [2,3,1]`

is`[3,1,2]`

. - While the next permutation of
`arr = [3,2,1]`

is`[1,2,3]`

because`[3,2,1]`

does not have a lexicographical larger rearrangement.

Given an array of integers `nums`

, *find the next permutation of* `nums`

.

The replacement must be **in place** and use only constant extra memory.

**Examples**

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]

**Constraints:**

`1 <= nums.length <= 100`

`0 <= nums[i] <= 100`

**Solution to Next Permutation Leetcode**

Given the Skeleton Code given by Leetcode

```
class Solution(object):
def nextPermutation(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
```

Looking forward from the end of the original array, we can see that the number progressively grows higher, then lowers at 2, and then we seek for the first number greater than 2, which is 3, then we swap 2 and 3, and finally we transpose all the numbers after 3.

**Complete Solution:**

```
class Solution(object):
def nextPermutation(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
if len(nums) <= 1:
return
for i in range(len(nums) - 2, -1, -1):
if nums[i] < nums[i + 1]:
for k in range(len(nums) - 1, i, -1):
if nums[k] > nums[i]:
nums[i], nums[k] = nums[k], nums[i]
nums[i+1:] = sorted(nums[i+1:])
break
break
else:
if i == 0:
nums.sort()
```

#### READ MORE

**Python-related** posts Visit **HERE**

**C++** related posts Visit **HERE**

**Databases** related posts Visit **HERE**

**Data Structures **related posts visit **HERE**

**Algorithms **related posts visit **HERE**

**Data Science** related posts visit **HERE**