Leetcode——46. 全排列

大寫的ZDQ發表於2019-04-17

給定一個沒有重複數字的序列,返回其所有可能的全排列。

示例:

輸入: [1,2,3]
輸出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]

思路:回溯方法,每次取一個prefix,剩下的繼續做permutation,然後連線起來加入res中

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        if len(nums) == 0:
            return []
        if len(nums) == 1:
            return [nums]
        res = []
        for i in range(len(nums)):
            prefix = nums[i]			# 取出開頭的prefix
            rest = nums[:i] + nums[i+1:] # 放入rest中
            for j in self.permute(rest):	# 回溯
                res.append([prefix] + j)
        return res

相關文章