```
如果从末尾往前看,数字逐渐变大,到了2时才减小的,然后我们再从后往前找第一个比2大的数字,是3,那么我们交换2和3,再把此时3后面的所有数字转置一下即可,步骤如下:
1 2 7 4 3 1
1 2 7 4 3 1
1 3 7 4 2 1
1 3 1 2 4 7
class Solution(object):
def nextPermutation(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
k,l=-1,0
for i in xrange(len(nums)-1):
if nums[i]<nums[i+1]:
k=i
if k==-1:
nums.reverse()
return
for i in xrange(k+1,len(nums)):
if nums[k]<nums[i]:
l=i
nums[k],nums[l]=nums[l],nums[k]
nums[k+1:]=nums[:k:-1]
```