NextPermutation

Published at 2021-07-12

class Solution:
    def nextPermutation(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        if sorted(nums, reverse=True) == nums:
            nums[:] = sorted(nums)
            return
        i = len(nums) - 2
        while i > 0 and nums[i] >= nums[i + 1]:  # 같은 숫자일때도 넘어가야되니까 i-- 해줘야함
            i -= 1
        j = len(nums) - 1
        while j > 0:
            if nums[i] < nums[j]:
                nums[i], nums[j] = nums[j], nums[i]
                nums[:] = nums[:i + 1] + sorted(nums[i + 1:])
                return
            j -= 1