python leetcode 31. Next Permutation

思路从尾部遍历找到相对较大值,再从尾部遍历找到恰好比它后一个值小的数字,这两个数字互换再翻转 比如 156432 第一次循环先定位到6,第二次循环定位到6,6和5互换,165432,后面的数字再翻转,162345

class Solution(object):
    def nextPermutation(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        l1 = len(nums)
        if l1 > 1:
            flag = 0 
            for i in range(l1-1,0,-1):
                if nums[i] > nums[i-1]:
                    flag = 1 
                    break 
            if flag == 0:
                nums[:]=nums[:][::-1]
            else:
                for j in range(l1-1,i-1,-1):
                    if nums[j] > nums[i-1]:
                        nums[i-1],nums[j] = nums[j],nums[i-1]
                        nums[i:]=nums[i:][::-1]
                        break

猜你喜欢

转载自blog.csdn.net/Neekity/article/details/84864620