leetcode 31. Next Permutation

    xiaoxiao2022-07-07  137

    ''' 求下一个字典序,使用经典的算法 ''' class Solution: def nextPermutation(self, nums) -> None: """ Do not return anything, modify nums in-place instead. """ if len(nums)<=1: return flag=False # 表示现在还没有找到反向扫描过程中的降序对 i=len(nums)-1 for i in range(len(nums)-1,0,-1): if nums[i]>nums[i-1]: flag=True break if flag==False:# 表示反向扫描阶段,遇到的都是升序对,说明已经到达全排列的最后一个数 nums.sort() return index_left=i-1 j=len(nums)-1 for j in range(len(nums)-1,index_left,-1): if nums[j]>nums[index_left]: break index_right=j temp=nums[index_left] nums[index_left]=nums[index_right] nums[index_right]=temp # print(index_left,index_right) nums[(index_left+1):]=nums[(index_left+1):][::-1] if __name__=="__main__": Solution().nextPermutation([3,2,1])

     

    最新回复(0)