每日一道leetcode(python)46. 全排列
2021-08-25
给定一个不含重复数字的数组 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]]来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
python有自带的库
- product 笛卡尔积 (有放回抽样排列)
- permutations 排列 (不放回抽样排列)
- combinations 组合,没有重复 (不放回抽样组合)
- combinations_with_replacement 组合,有重复 (有放回抽样组合)
class Solution:def permute(self, nums: List[int]) -> List[List[int]]:return list(itertools.permutations(nums))
回溯法
class Solution:def permute(self, nums: List[int]) -> List[List[int]]:res=[]tem=[]def backtrack(nums,tem):if nums==[]:if tem not in res:res.append(tem[:])else:for i in range(len(nums)):tem.append(nums[i])backtrack(nums[0:i]+nums[i+1:],tem)if tem==[]:return 0tem.pop()backtrack(nums,tem)return res
本文链接:https://my.lmcjl.com/post/8222.html
展开阅读全文
4 评论