DEV Community

Luckshvadhan B
Luckshvadhan B

Posted on

Next Permutation

Approach:

Step 1 Start from right find index where arr[i] < arr[i+1]
Step 2 If not found reverse whole array
Step 3 Else find element just greater than arr[i] from right
Step 4 Swap both
Step 5 Reverse remaining part

Why this works???
We find point where order breaks
then make next bigger arrangement
reverse makes it smallest after swap

Code:
def nextPermutation(nums):
i=len(nums)-2
while i>=0 and nums[i]>=nums[i + 1]:
i-=1
if i>=0:
j=len(nums)-1
while nums[j]<=nums[i]:
j-=1
nums[i],nums[j]=nums[j],nums[i]
nums[i+1:]=reversed(nums[i+1:])

Limitation:
Bit confusing first time

Top comments (0)