题目
思路分析
题目要求:求比当前排序大的排序(最接近)
举例
(1)13156-》13165
(2)13152-》13215
(3)24321-》31224
代码展示
class Solution:
def nextPermutation(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
numslen = len(nums)
i = numslen-1
#找到第一个当前元素比前面的元素要大的下标
while i>0:
if nums[i]<=nums[i-1]:
i-=1
#不能一直循环,需要退出
else:
break
# print(i,"i")
#如果当前排序就是最大的,返回最小排序
if i ==0:
nums.sort()
else:
#从后往前找第一个大于nums[i-1]的值
j = numslen-1
while True:
if nums[j]>nums[i-1]:
break
j-=1
#交换
t = nums[i-1]
nums[i-1] = nums[j]
nums[j] = t
#排序
temp2 = nums[i:]
temp2.sort()
nums[i:] = temp2