Saturday, August 15, 2015

Leetcode 31. Next Permutation

https://leetcode.com/problems/next-permutation/

There is a specific algorithm to get the next permutation.

Solution:
# T:O(n) S:O(1)
class Solution:
    # @param num, a list of integer
    # @return a list of integer
    def nextPermutation(self, num):
        partition = -1
        for i in range(len(num)-2, -1, -1):
            if num[i] < num[i+1]:
                partition = i
                break
        if partition == -1: 
            num.reverse()
        else:
            for i in range(len(num)-1, partition, -1):
                if num[i] > num[partition]:
                    num[i],num[partition] = num[partition],num[i]
                    break
            num[partition+1:len(num)]=num[partition+1:len(num)][::-1]
Run Time: 76 ms

No comments:

Post a Comment