# # leetcode47 # 给定一个可包含重复数字的序列nums ,按任意顺序返回所有不重复的全排列。 # # # 示例1: # 输入:nums = [1, 1, 2] # 输出: # [[1, 1, 2], # [1, 2, 1], # [2, 1, 1]] # # 示例2: # 输入:nums = [1, 2, 3] # 输出:[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]] # # 提示: # 1 <= nums.length <= 8 # -10 <= nums[i] <= 10 path = [] nums = [1, 1, 2] visit = [0] * len(nums) res = [] nums.sort() def get_permutations(visit,nums): # print(path) if len(path) == len(nums): res.append(path[:]) for i in range(len(nums)): if i>0 and nums[i-1] ==nums[i] and visit[i-1]==0: continue if visit[i] == 1: continue path.append(nums[i]) visit[i] = 1 get_permutations(visit,nums) path.pop() visit[i] = 0 return res print(get_permutations(visit,nums))
14.回溯算法-全排列2.py
于 2023-12-06 21:28:10 首次发布