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

有重复项数字的全排列

https://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param num int整型一维数组
# @return int整型二维数组
#
class Solution:
    def permuteUnique(self, num: list[int]) -> list[list[int]]:
        # write code here
        ans = []
        length = len(num)
        visited = [False for i in range(length)]
        L = []
        num.sort()
        print(num)

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

            for i in range(length):
			    #在这里进行树枝标记
                if visited[i]:
                    continue
				#在这里进行树层剪枝
                if i > 0 and num[i] == num[i - 1] and visited[i - 1] == False:
                    continue

                L.append(num[i])
                visited[i] = True
                traversal(num, visited, L)
				#回溯
                L.pop()
                visited[i] = False

        traversal(num, visited, L)
        return ans

全部评论

相关推荐

10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务