這題看起來也很像高中的排列組合
好像有點廢話 他就是排列阿阿
對這些數字作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好像也能做??