题目:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
解法:
回溯1
func permute(nums []int) [][]int {
ans := make([][]int, 0)
var backtrack func(index int)
backtrack = func(index int) {
if index >= len(nums) {
ans = append(ans, append([]int{}, nums...))
return
}
for i := index; i < len(nums); i ++ {
nums[index], nums[i] = nums[i], nums[index]
backtrack(index + 1)
nums[index], nums[i] = nums[i], nums[index]
}
}
backtrack(0)
return ans
}