全排列 (lintcode:permutations)

给定一个数字列表,返回其所有可能的排列。假设没有重复数字。
样例:给出一个列表[1,2,3],其全排列为:

[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]


代码:

class Solution:
    """
    @param: nums: A list of integers.
    @return: A list of permutations.
    """
    def permute(self, nums):
        # write your code here
        if(len(nums)<=1):
            return [nums]  
        r=[]  
        for i in range(len(nums)):  
            s=nums[:i]+nums[i+1:]  
            p=self.permute(s) #  self 别忘了
            for x in p:  
                r.append(nums[i:i+1]+x)  
        return r




lintcode 原题
解法的 出处

20180225

你可能感兴趣的:(全排列 (lintcode:permutations))