您的位置:首页 > 编程语言 > Python开发

【Leetcode】【python】Permutations

2017-10-03 11:15 330 查看

题目大意

求一组数的全排列

解题思路

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

代码

正常思路

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


总结

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python leetcode