Q46 - Medium - 全排列

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

示例:

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

回溯

import copy
class Solution:
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        res = []
        self.back_track(res, nums, 0)
        return res
    
    def back_track(self, res, nums, n):
        if n == len(nums):
            temp = copy.deepcopy(nums)
            res.append(temp)
        else:
            for i in range(n, len(nums)):
                nums[n], nums[i] = nums[i], nums[n]
                self.back_track(res, nums, n+1)
                nums[n], nums[i] = nums[i], nums[n]

DFS

class Solution(object):
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        visited = [0] * len(nums)
        res = []
        
        def dfs(path):
            if len(path) == len(nums):
                res.append(path)
            else:
                for i in range(len(nums)):
                    if not visited[i]:
                        visited[i] = 1
                        dfs(path + [nums[i]])
                        visited[i] = 0
        
        dfs([])
        return res

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文欢迎关注http://blackblog.tech/2018/06/03/LeetCodeReview/欢迎关...
    BlackBlog__阅读 1,977评论 0 9
  • 转眼离开家 来到户口所在地学文化课的我已经在这呆了一个月 没有熟悉的朋友 能谈心的人 这感觉真心不那么好 不...
    多情应笑我R阅读 122评论 0 0
  • 下载JDK http://www.oracle.com/technetwork/java/javase/downl...
    AmeeLove阅读 287评论 0 0
  • 已经习惯了放弃,学不会坚持。 如果真的一年、两年、数年的坚持去做一件事, 就真的能做好,做出成就吗? 每天对着电脑...
    冰水珊瑚阅读 88评论 0 0
  • 于小小的闲窗下, 看檐角阳光倾泻而下, 看时光过客浅淡过往, 翻开一页页的人生, 看那些风花雪月,风华过往, 叹那...
    遇见季风阅读 202评论 0 2