题目:
题解:
func permuteUnique(nums []int) (ans [][]int) {sort.Ints(nums)n := len(nums)perm := []int{}vis := make([]bool, n)var backtrack func(int)backtrack = func(idx int) {if idx == n {ans = append(ans, append([]int(nil), perm...))return}for i, v := range nums {if vis[i] || i > 0 && !vis[i-1] && v == nums[i-1] {continue}perm = append(perm, v)vis[i] = truebacktrack(idx + 1)vis[i] = falseperm = perm[:len(perm)-1]}}backtrack(0)return
}