var result [][]int var path []int funcpermuteUnique(nums []int) [][]int { sort.Ints(nums) result = [][]int{} path = []int{} m := make(map[int]bool) backtracking(nums, m) return result }
funcbacktracking(nums []int, m map[int]bool) { iflen(path) == len(nums) { t := make([]int, len(path)) copy(t, path) result = append(result, t) } uset := make(map[int]bool) for i := 0; i < len(nums); i++ { if m[i] == true {continue} if uset[nums[i]] == true {continue} m[i] = true uset[nums[i]] = true path = append(path, nums[i]) backtracking(nums, m) path = path[:len(path) - 1] m[i] = false } }