首页 > 其他 > 详细

leetcode 每日一题 46. 全排列

时间:2020-05-28 09:46:58      阅读:42      评论:0      收藏:0      [点我收藏+]

技术分享图片

回溯法

思路:

DFS,深度优先搜索。

代码一:

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        def pathProcess(res:List[list],subNums:List[int],path:List[int]):
            if not subNums:
                res.append(path[:])
            for i in subNums:
                tempNum = subNums[:]
                path.append(i)
                tempNum.remove(i)
                pathProcess(res,tempNum,path)
                path.pop()
        res = []
        path = []
        pathProcess(res,nums,path)
        return res

 

代码二:

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        def pathProcess(first = 0):
            if  first==n:
                res.append(nums[:])
            for i in range(first,n):
                nums[first],nums[i] = nums[i],nums[first]
                pathProcess(first+1)
                nums[first],nums[i] = nums[i],nums[first]
                
        n = len(nums)
        res = []
        pathProcess()
        return res

 

leetcode 每日一题 46. 全排列

原文:https://www.cnblogs.com/nilhxzcode/p/12978130.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!