47. Permutations II (i = 0, sort, used

因為有重複的, 所以勢必需要去掉重複, 所以會需要先排序 (去重想到排序

多用一個 used[] 來記錄是不是使用過,

nums[i] == nums[i-1] 去重複, 且 !used[i-1] (因為在剛剛 dfs 過程中被backtracking 成 false)

time: O(n!*n) .or O(n!)

space: O(n!*n) .or O(n!)

為什麼這題要特別判斷 /// if (i > 0 && nums[i] == nums[i-1] && !used[i-1] && !used[i]) {

要多這個 !used[i-1] && !used[i])

因為這個寫法不是真的要去重, 而是要確定重複的只會出現一次

所以要特別用 !used[i-1] && !used[i]) 確認沒使用過

如果是其他題目, 可能是真的要去重, 所以才會只寫 i > 0 && nums[i] == nums[i-1]

that's all!!!

Last updated

Was this helpful?