题解 | #有重复项数字的全排列#
有重复项数字的全排列
https://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863
func permuteUnique( num []int ) [][]int { // write code here if len(num)==0{ return [][]int{} } sort.Ints(num) ans := [][]int{} path := []int{} used := make([]bool, len(num)) var dfs func(num, path []int, used []bool) dfs = func(num, path []int, used []bool){ if len(num)==len(path){ temp := make([]int, len(num)) copy(temp, path) ans = append(ans, temp) } for i:=0;i<len(num);i++{ if used[i]{ continue } if i>0 && num[i-1]==num[i] && !used[i-1]{ continue } used[i] = true path = append(path, num[i]) dfs(num, path, used) used[i] = false path = path[:len(path)-1] } } dfs(num, path, used) return ans }