【LeetCode】46.全排列

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time: 2019/3/13
# @Author: xfLi
# The file...

"""
问题分析:
使用回溯法,我们每次选择一个数出来,然后把剩下的数,再选择一个出来,
依次类推,选到头,就回溯到上一层。就是深度优先搜索方法。
"""

def permute(nums):
    res = []
    def depthOrderTraverse(nums=nums, path=[]):  #深度优先搜索
        if not nums:  # 选到最后一位数,添加到res中,这里是递归出口,可以加return也可以不加,后续一定会结束。
            res.append(path)
        for i in range(len(nums)):  # 每次选择一个深度
            depthOrderTraverse(nums[:i] + nums[i+1:], path+[nums[i]])
    depthOrderTraverse()
    return res

if __name__ == '__main__':
    nums = [1, 2, 3]
    result = permute(nums)
    print(result)


猜你喜欢

转载自blog.csdn.net/qq_30159015/article/details/88537352