Next Permutation (LC-0031)

class Solution:
    def nextPermutation(self, nums):
        N = len(nums)

        if N < 2:
            return nums
        
        lx = None
        for ix in range(N - 2, -1, -1):
            if nums[ix] < nums[1 + ix]:
                lx = ix
                break
                
        if lx == None:
            nums.sort()
            return

        for ix in range(N - 1, lx, -1):
            if nums[ix] > nums[lx]:
                nums[lx], nums[ix] = nums[ix], nums[lx]
                nums[1 + lx::] = sorted(nums[1 + lx::])
                break
        
        return nums