46. 全排列

https://leetcode-cn.com/problems/permutations/

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

示例:

输入: [1,2,3] 输出: [

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

]

class Solution(object):
    def __init__(self):
        self.result = []

    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        self.backtrack(nums, [])
        return self.result

    def backtrack(self, nums, track):
        if len(nums) == len(track):
            self.result.append(track[:])

        for n in nums:
            if n in track:
                continue
            track.append(n)
            self.backtrack(nums, track)
            track.pop()