给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:[
[1,3],
[1,3,2],
[2,1,1],
[3,1]
]
Python solution 1:
class Solution(object): def permute(self,nums): """ :type nums: List[int] :rtype: List[List[int]] """ return [[n] + p for i,n in enumerate(nums) for p in self.permute(nums[:i] + nums[i+1:])] or [[]]
分析:运用了递归的方法,每次先从不断变化的nums中挑出一个数排在前面,剩下的数参与递归。
在递归中,仍然是先从新的nums中挑出一个数排在前面,然后剩余部分参与下一次递归。
“调数”这一过程是按顺序遍历nums中的每一个数,因此不会漏掉任何情况,也不会多出任何情况。
给定的nums有可能是空集,所以最后要加上or [[]]
。
Python solution 2:
class Solution(object): def permute(self,nums): """ :type nums: List[int] :rtype: List[List[int]] """ return map(List,itertools.permutations(nums))
分析:
这里用到了自带的全排列函数permutations
,其用法见:https://blog.csdn.net/qq_33528613/article/details/79372174,作用是返回一个可迭代对象的所有全排列。
以上是内存溢出为你收集整理的12-1:(46)全排列全部内容,希望文章能够帮你解决12-1:(46)全排列所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)