12-1:(46)全排列

12-1:(46)全排列,第1张

概述46. 全排列 给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] Python solution 1: class Solution(object): def permute(self, nums): """ 46. 全排列

给定一个没有重复数字的序列,返回其所有可能的全排列。

示例:

输入: [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)全排列所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1198012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存