解法1: 模拟,用代码模拟我们处理问题的思路思维
from typing import List class Solution: def nextPermutation(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ # 其实就是一个常规的模拟题,通过代码模拟我们的思路思维 n = len(nums) i = n - 2 # 第一步:找到第一个 nums[i] < nums[i+1] 的位置,同时所有i后面的都是降序 while i >=0 and nums[i] >= nums[i+1]: i -=1 # 第二步:从右往左找到第一个nums[j] > nums[i] j = n-1 if i >= 0: # 第一步成立 while j > i : if nums[j] > nums[i]: nums[j],nums[i] = nums[i],nums[j] break j -=1 # 第三步: 反转i+1及其后面的序列 start,end = i+1,n-1 while end > start: nums[start],nums[end] = nums[end],nums[start] end -=1 start +=1