# Next Permutation Leetcode – Python Solution

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

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()``````

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

Share the Knowledge