全排列

给定一个没有重复数字的序列,返回其所有可能的全排列。

示例:

输入1:

[1,2,3]

输出1:

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

解答:

def permute(self, nums):
    if nums is None or len(nums) == 0 : return nums
    if len(nums) == 1 : return [nums]
    result = []
    for i in range(len(nums)):
        nums[0],nums[i] = nums[i],nums[0]
        for j in self.permute(nums[1:]):
            result.append([nums[0]]+j)
        nums[0],nums[i] = nums[i],nums[0]
    return result