[Lintcode]52. Next Permutation

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Lintcode]52. Next Permutation相关的知识,希望对你有一定的参考价值。

?????????reverse   ??????   topic   order   out   sel   greedy   ??????   ??????   

52. Next Permutation

  • ????????????: Medium
  • Topic: Greedy

Description

52. Next Permutation

  • ????????????: Medium
  • Topic: Greedy

Description

Given a list of integers, which denote a permutation.

Find the next permutation in ascending order.

Example
Example 1:

Input:[1]
Output:[1]
Example 2:

Input:[1,3,2,3]
Output:[1,3,3,2]
Example 3:

Input:[4,3,2,1]
Output:[1,2,3,4]
Notice
The list may contains duplicate integers.

???????????????

class Solution:
    """
    @param nums: A list of integers
    @return: A list of integers
    """

    def nextPermutation(self, num):
        # write your code here
        for i in range(len(num)-2, -1, -1):
            if num[i] < num[i+1]:
                break
        else:
            num.reverse()
            return num
        for j in range(len(num)-1, i, -1):
            if num[j] > num[i]:
                num[i], num[j] = num[j], num[i]
                break
        for j in range(0, (len(num) - i)//2):
            num[i+j+1], num[len(num)-j-1] = num[len(num)-j-1], num[i+j+1]
        return num

??????

?????????????????????
??????????????????????????????????????????










以上是关于[Lintcode]52. Next Permutation的主要内容,如果未能解决你的问题,请参考以下文章

lintcode-medium-Next Permutation II

Lintcode190 Next Permutation II solution 题解

队测 逆序对 permut

LintCode之在O时间复杂度删除链表

lintcode 170旋转链表

LintCode链表题总结