# # # leetcode46 # # 给定一个不含重复数字的数组nums ,返回其所有可能的全排列 。 # 你可以按任意顺序返回答案。 # # # 示例1: # 输入:nums = [1, 2, 3] # 输出:[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]] # # 示例2: # 输入:nums = [0, 1] # 输出:[[0, 1], [1, 0]] # # 示例3: # 输入:nums = [1] # 输出:[[1]] # # 提示: # 1 <= nums.length <= 6 # -10 <= nums[i] <= 10 # nums中的所有整数互不相同 nums = [1, 2, 3] # 全排列 from itertools import permutations permutations_lists = permutations(nums) print([i for i in permutations_lists]) # 组合 from itertools import combinations combination_lists = [] for i in range(1, len(nums)+1): combination_list = combinations(nums,i) combination_lists.extend(list(combination_list)) print(combination_lists) # 全排列 path = [] res = [] visit = [0] * len(nums) def get_permutations(nums, visit): if len(path) == len(nums): res.append(path[:]) # visit = [0]*len(nums) for i in range(len(nums)): if visit[i] == 1: continue path.append(nums[i]) visit[i] = 1 get_permutations(nums, visit) path.pop() visit[i] = 0 return res print(get_permutations(nums, visit))
13.回溯算法-全排列.py
于 2023-12-06 21:27:40 首次发布