class Solution:
def nextPermutation(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
n = len(nums)
if n <= 2:
nums.reverse() #长度小于等于2时,直接逆序
else:
i = n-2
while i >= 0 and nums[i] >= nums[i+1]: #找降序起点
i -= 1
if i == -1: #整段都是降序,则整段逆序
nums.reverse()
else:
for j in range(n-1, i, -1): #找比nums[i]大的最小数交换
if nums[j] > nums[i]:
nums[i], nums[j] = nums[j], nums[i]
break
nums[i+1:] = nums[n-1:i:-1] #[i+1,n-1]部分逆序