zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【LeetCode】46.全排列

LeetCode 排列 46
2023-09-14 09:13:24 时间

0. 总结

  • 10min题

1. 题目

在这里插入图片描述

2. 分析

经典题了。思路就是递归。对于每个数,当前都有选不选两种,但是无论如何,最后都需要把所有数都给选了

3. 代码

import copy

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        vis = [0] * len(nums)
        res = []
        self.dfs(nums,vis,res,n=len(nums),tmp=[])
        return res
    # nums 表示数组
    # vis 表示是否访问过
    # res 表示存储最后的结果
    # n 表示数组的个数
    def dfs(self,nums,vis,res,n,tmp):
        if len(tmp) == n:
            print(tmp)
            res.append(copy.deepcopy(tmp))
            return

        # 依次访问nums中的第i个数
        for i in range(n):
            if vis[i] == 0:
                vis[i] = 1
                tmp.append(nums[i]) 
                self.dfs(nums,vis,res,n,tmp)
                vis[i] = 0
                tmp.pop()