复习回顾-回溯算法-46. 全排列

注意点&感悟:

  • used是全局的,通过改变标记来确定本层是否搜索完毕,
  • 用used跳过[1,1,1]这种
  • 不用start_index了

题目链接:46. 全排列

自己独立写的代码:

查看代码

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        # 不用start_index了 | 用used记录每层做跳过
        res = []
        used = [0] * len(nums)
        self.backtracking(nums,[],res,used)
        return res
            
    def backtracking(self,nums,path,res,used):
        if len(path) == len(nums):
            res.append(path[:])
            return 
        
        for i in range(len(nums)):
            if used[i] ==1:
                continue
            path.append(nums[i])
            used[i] = 1
            self.backtracking(nums,path,res,used)
            used[i] = 0
            path.pop()

通过截图:

posted @ 2024-02-19 16:05  o蹲蹲o  阅读(1)  评论(0编辑  收藏  举报