[Lintcode]52. Next Permutation

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

思路

写到怀疑人生。
一开始就没好好注意条件活该!

posted @ 2019-02-11 00:37  siriusli  阅读(163)  评论(0编辑  收藏  举报