思路从尾部遍历找到相对较大值,再从尾部遍历找到恰好比它后一个值小的数字,这两个数字互换再翻转 比如 156432 第一次循环先定位到6,第二次循环定位到6,6和5互换,165432,后面的数字再翻转,162345
class Solution(object):
def nextPermutation(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
l1 = len(nums)
if l1 > 1:
flag = 0
for i in range(l1-1,0,-1):
if nums[i] > nums[i-1]:
flag = 1
break
if flag == 0:
nums[:]=nums[:][::-1]
else:
for j in range(l1-1,i-1,-1):
if nums[j] > nums[i-1]:
nums[i-1],nums[j] = nums[j],nums[i-1]
nums[i:]=nums[i:][::-1]
break