题解 | #没有重复项数字的全排列#

没有重复项数字的全排列

https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param num int整型一维数组
# @return int整型二维数组
#
#
#
# @param num int整型一维数组
# @return int整型二维数组
#
class Solution:
    def permute(self, num: list[int]) -> list[list[int]]:
        # write code here
        ans = []
        length = len(num)
		#visited数组中的False表明没有被访问过,如果被访问过就不能访问直接访问下一个元素
        visited = [False for i in range(length)]
		#L用于统计元素,当达到元素的深度时,不再往下进行递归,进行回溯
        L = []

        def traversal(num, visited, L):
            if len(L) == length:
                ans.append(L.copy())
                return

            for i in range(length):
                if visited[i]:
                    continue
                else:
                    L.append(num[i])
                    visited[i] = True
                    traversal(num, visited, L)
                    L.remove(L[-1])
                    visited[i] = False

        traversal(num, visited, L)
        return ans

全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务