【leetcode】 46. Permu

发布时间:2019-09-02 07:57:48编辑:auto阅读(1655)

    1. Permutations

    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]
    ]

    给一堆不同的数,然后让你写成这样上面的样子,就是排列组合。
    举个简单例子【1,2,3】吧
    刚拿到这3个数
    假设开始我们什么都没有,从一个空[]开始,
    那现在第一步,我们有三条路:[1],[2],[3]
    然后 对[1]来说,有两条路[1,2] ||[1,3],然后这两条路分别只有一条路[1,2,3] ||[1,3,2]
    以此类推

    这里写图片描述

    代码如下:用递归

    
    
    
    class Solution(object):
        def permute(self, nums):
            """
            :type nums: List[int]
            :rtype: List[List[int]]
            """
            self.res = []
            sub = []
            self.dfs(nums,sub)
            return self.res
    
        def dfs(self, Nums, subList):
            if len(subList) == len(Nums):
                #print res,subList
                self.res.append(subList[:])
            for m in Nums:
                if m in subList:
                    continue
                subList.append(m)
                self.dfs(Nums,subList)
                subList.remove(m)

关键字