46. Permutations排列Python

给定一组不相等的整数,返回所有排列。

Input:[1,2,3]

Output:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

Method 1 

迭代,定义一个临时的空list,for循环每次先判断这个数是否存在temp里面,如果不存在就存贮到temp。当temp长度与nums长度相同时,将temp存到需要输出的res中。思路与39题类似。

46. Permutations排列Python_第1张图片

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        res=[]
        def k(temp):
            if len(temp) == len(nums):
                res.append(temp[:])
                return
            for _ in nums:
                if _ not in temp:
                    temp.append(_)
                    k(temp)
                    temp.pop()
        k([])
        return res

Method 2

确定第一个数的位置,后面排列组合。

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        def p(a,num):
            ans = []
            for k in range(len(a)):
                for i in range(len(a[0])+1):
                    ans.append(a[k][:i]+[num]+a[k][i:])
            return ans
        a = [[nums[0]]]
        for j in range(1,len(nums),1):
            a = p(a,nums[j])
        return a

 

你可能感兴趣的:(46. Permutations排列Python)