https://leetcode-cn.com/probl...

简单的深度优先遍历。

尝试了 list 的 append 再 pop 和直接使用下标修改 list 的值。

看起来对结果影响很小。

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        ans = []
        n = len(nums)
        f = [False] * n
        l = []
        def dfs(i):
            if i == n:
                ans.append(l[::])
                return
            for j in range(n):
                if not f[j]:
                    l.append(nums[j])
                    f[j] = True
                    dfs(i+1)
                    f[j] = False
                    l.pop()
        dfs(0)
        return ans

执行用时 :40 ms, 在所有Python3提交中击败了88.14%的用户

内存消耗 :13.1 MB, 在所有Python3提交中击败了59.71%的用户

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        ans = []
        n = len(nums)
        f = [False] * n
        l = [0] * n
        def dfs(i):
            if i == n:
                ans.append(l[::])
                return
            for j in range(n):
                if not f[j]:
                    l[i] = nums[j]
                    f[j] = True
                    dfs(i+1)
                    f[j] = False

        dfs(0)
        return ans

执行用时 :40 ms, 在所有Python3提交中击败了88.14%的用户

内存消耗 :13.1 MB, 在所有Python3提交中击败了59.50%的用户

欢迎来我的博客: https://codeplot.top/
我的博客刷题分类:https://codeplot.top/categories/%E5%88%B7%E9%A2%98/


sxwxs
292 声望21 粉丝

计算机专业学生