【leetcode 46】 全排列

回溯法框架:

result = []
def backtrack(路徑, 選擇列表):
    if 滿足結束條件:
        result.add(路徑)
        return

    for 選擇 in 選擇列表:
        做選擇
        backtrack(路徑, 選擇列表)
        撤銷選擇

實現:

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        self.ans = []
        def backtrace(nums,path):
            if not nums:
                self.ans.append(path)
            for i in range(len(nums)):
                backtrace(nums[:i]+nums[i+1:],path+[nums[i]])
        backtrace(nums,[])
        return self.ans
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章