题目46:全排列
题目描述:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
题解:
func permute(nums []int) [][]int {
res, r := [][]int{}, []int{}
if len(nums) == 1{
res = append(res,nums)
return res
}
backTracking(&res, r, nums)
return res
}
func backTracking(res *[][]int, r []int, nums []int){
if len(r) == len(nums){
tmp := make([]int, len(r))
copy(tmp, r)
*res = append(*res, tmp)
return
}
for i:=0;i<len(nums);i++{
if contain(r, nums[i]){
continue
}
r = append(r, nums[i])
backTracking(res, r, nums)
r = r[:len(r)-1]
}
}
func contain(nums []int, n int) bool{
for _, num := range nums{
if num == n{
return true
}
}
return false
}