31 Next Permutation

计算下一个序列:首先对数组从右向左进行扫描,找到第一个不是递增的元素,将元素标记为p, 然后从p元素开始,向右扫描,找到比p大的最小元素,记为q, 交换p元素和q元素,然后对于p元素后续的元素进行反转,得到下一个排序。

class Solution(object):
    def nextPermutation(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        if not nums or len(nums) == 1:
            return

        n = len(nums)
        for i in range(n-1, -1, -1):
            if nums[i-1] < nums[i]:
                for j in range(n-1, i-1, -1):
                    if nums[j] > nums[i-1]:
                        nums[j], nums[i-1] = nums[i-1], nums[j]
                        nums[i:] = sorted(nums[i:])
                        break
                break

results matching ""

    No results matching ""