[LeetCode] Permutations

這題看起來也很像高中的排列組合

好像有點廢話 他就是排列阿阿

對這些數字作DFS的結果就是排列惹

每層要做的事情 就用loop跑完當前nums的全部數字

每跑一個就是一個branch

然後把這個數字刪掉(對於當前這個branch而言,其他branch還是要保有該數字….不然一下就刪光惹)

然後繼續往下一層走

走到nums這個array沒有數字為止 就代表走到leaf惹

然後回去走其他branch…

我就下去寫惹…因為default是C++

看到vector要刪數字就覺得崩潰

就去python寫了….人生獲得救贖吧

用linked list寫瞬間通體舒暢 根本沒幾行阿阿阿阿

速度來說也會快N倍吧吧

class Solution(object):
    def permute(self, nums):
        res = []
        self.dfs(nums, [], res)
        return res
    
    def dfs(self, nums, one_ans, res):
        if not nums:
            res.append(one_ans)
        for i in range(len(nums)):
            self.dfs(nums[:i]+nums[i+1:], one_ans+[nums[i]], res)

好久沒寫python惹惹惹惹惹

這題好像蠻多作法的,DP好像也能做??