【Leetcode】【python】Permutations

来源:互联网 发布:去除淘宝店铺模块缝隙 编辑:程序博客网 时间:2024/06/05 03:59

题目大意

求一组数的全排列

解题思路

回溯,想起来思路很简单,实际写的时候遇到了很多麻烦。

代码

正常思路

class Solution(object):    def permute(self, nums):        """        :type nums: List[int]        :rtype: List[List[int]]        """        result = []        self.get_permute([], nums, result)        return result    def get_permute(self, current, num, result):        if not num:  # 如果num里没有数了,加到结果集,结束函数            # print 'benlun:', current, current + []            result.append(current+[])  # 不加[],结果是混乱的,没搞懂            return        for i in range(len(num)):            current.append(num[i])            # print current, num[:i] + num[i + 1:], 'result', result            self.get_permute(current, num[:i] + num[i + 1:], result)  # num改为拿走nums[i]后的数列            current.pop()

稍微难理解

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:]  # n是剩余数的list            for y in self.permute(n):  # 直到函数有return,一个数的时候[nums],所以y是list                ans.append([num] + y)        return ans

总结

原创粉丝点击