题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
package main
/**
*
* @param num int整型一维数组
* @return int整型二维数组
*/
func permute(nums []int) [][]int {
res := [][]int{}
length := len(nums)
if length == 0 {
return res
}
path := []int{}
used := make([]bool, length)
dfs(nums, length, 0, &path, &used, &res)
return res
}
func dfs(nums []int, length, depth int, path *[]int, used *[]bool, res *[][]int) {
if length == depth {
temp := []int{}
temp = append(temp, *path...)
*res = append(*res, temp)
}
for i := 0; i < length; i++ {
if (*used)[i] {
continue
}
*path = append(*path, nums[i])
(*used)[i] = true
dfs(nums, length, depth+1, path, used, res)
*path = (*path)[:len(*path)-1]
(*used)[i] = false
}
}
