leetcode-31-下一个排列

Posted oldby

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-31-下一个排列相关的知识,希望对你有一定的参考价值。

题目描述:

技术图片

 

方法一:O(n) O(1)

class Solution:
    def nextPermutation(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        firstIndex = -1
        n = len(nums)
        def reverse(nums,i,j):
            while i<j:
                nums[i],nums[j] = nums[j],nums[i]
                i += 1
                j -= 1
            return nums
        for i in range(n-2, -1, -1):
            if nums[i] < nums[i+1]:
                firstIndex = i
                break
        if firstIndex == -1:
            reverse(nums,0,n-1)
            return
        secondIndex = -1
        for i in range(n-1, firstIndex, -1): 
            if nums[i] > nums[firstIndex]: 
                secondIndex = i 
                break
        nums[firstIndex],nums[secondIndex] = nums[secondIndex], nums[firstIndex] 
        reverse(nums, firstIndex+1, n-1)

 

以上是关于leetcode-31-下一个排列的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 31: 下一个排列

leetcode 31. 下一个排列

leetcode -- 31.下一个排列

LeetCode:31 下一个排列

LeetCode 31. 下一个排列 | Python

LeetCode 31. 下一个排列 | Python