Permutations

Leetcode-46

Posted by Evan on September 10, 2017

Permutations

Question

Given a collection of distinct numbers, return all possible permutations.

For example, [1,2,3] have the following permutations:

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

Solution

这是一道典型的回溯题,通过不断递归即可找到所有解

class Solution(object):
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        ret = []
        def back(nums, p = []):
            if not nums:
                ret.append(p)
                return
            for i in range(len(nums)) :
                back(nums[:i] + nums[i+1:], p + [nums[i]])
        back(nums)
        return ret