📅  最后修改于: 2023-12-03 15:10:02.516000             🧑  作者: Mango
本题要求按字典顺序排列给定字符串的所有较大排列。思路是:从后往前找到第一个比后面数字小的数,然后在后面的数字中找到比它大的最小数,交换这两个数字,再把原来的后面的数字全部翻转即可。
class Solution:
def nextPermutation(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
n = len(nums)
i = n - 2
while i >= 0 and nums[i] >= nums[i + 1]:
i -= 1
if i < 0:
nums.reverse()
return
j = n - 1
while j >= 0 and nums[j] <= nums[i]:
j -= 1
nums[i], nums[j] = nums[j], nums[i]
nums[i+1:] = nums[i+1:][::-1]