题目描述(中等难度)
解题思路
python 代码
class Solution:
def nextPermutation(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
i = len(nums)-2
# 找到第一个不再递增的位置
while i >= 0 and nums[i+1]<=nums[i]:
i -= 1
# 如果到了最左边,就直接倒置输出
if i >= 0:
# 刚好找到大于num[i]的位置
j = len(nums)-1
while j >= 0 and nums[j]<=nums[i]:
j -= 1
# 交换
self.swap(nums, i, j)
# 利用倒置进行排序
self.reverse_ll(nums, i + 1)
def swap(self,nums, i, j):
temp = nums[j]
nums[j] = nums[i]
nums[i] = temp
def reverse_ll(self,nums,start):
i = start
j = len(nums) - 1
while i < j:
self.swap(nums, i, j)
i += 1
j -= 1
s = Solution()
res = s.nextPermutation([1,2,3])
print('.....',res) # [1,3,2]