除了要找到后面最大数的前面一个数,还要找到后面某个数比他大就交换。例如:1,3,2,5,4,3我们肯定是先找到2,然后我们在5,4,3中找比2大的数,3比2大,所以2和3交换,得到1,3,3,5,4,2,然后再将3后面的数字5,4,2从小到大排序,最终得到1,3,3,2,4,5
class Solution(object):
def nextPermutation(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
k = 0
l = 0
n = len(nums)
for i in range(n-1, 0, -1):
if nums[i-1] < nums[i]:
k = i-1
break
for j in range(n-1, 0, -1):
if nums[j] > nums[k]:
l = j
break
if k!=0 or l!=0:
nums[k], nums[l] = nums[l], nums[k]
nums[k+1:] = sorted(nums[k+1:])
else:
nums[:] = nums[::-1]