[LeetCode]Permutations

题目描述:

LeetCode 46. Permutations

Given a collection of distinct numbers, return all possible permutations.

For example,
[1,2,3] have the following permutations:

[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

题目大意:

给定一个唯一数字的集合,返回所有可能的排列。

测试用例如题目描述。

解题思路:

递归(Recursion)

记传入数组为nums,若nums的长度不大于1,则直接返回[nums]

遍历nums,从中抽取一个数num,递归计算剩余数字组成的数组n,然后将num与结果合并

Python代码:

class Solution(object):
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        if len(nums) <= 1: return [nums]
        ans = []
        for i, num in enumerate(nums):
            n = nums[:i] + nums[i+1:]
            for y in self.permute(n):
                ans.append([num] + y)
        return ans

 

本文链接:http://bookshadow.com/weblog/2016/09/09/leetcode-permutations/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码

Pingbacks已关闭。

暂无评论

张贴您的评论