每日一道leetcode(python)46. 全排列

每日一道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 评论

留下您的评论.