全排列

题目链接

思路

对数组进行递归,每一次消除用了的元素,直到数组为空

go解题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var nlen int

func dfs(num []int, nums *[][]int, tmp []int) {

l := len(num)
if l == 1 {
tmp = append(tmp, num[0])
*nums = append((*nums), tmp)
return
}
for i := 0; i < l; i++ {
num[i], num[0] = num[0], num[i]
dfs(num[1:], nums, append(tmp, num[0]))
num[0], num[i] = num[i], num[0]
}
}
func permute(nums []int) [][]int {

var num [][]int
nlen = len(nums)
if nlen == 0 {
return num
}
dfs(nums, &num, nil)
return num
}