package main

/**
 *
 * @param num int整型一维数组
 * @return int整型二维数组
 */
var res [][]int

func permute(nums []int) [][]int {
	res = [][]int{}
	backtrack(nums, 0)
	return res
}

func backtrack(nums []int, idx int) {
	if idx == len(nums) {
		temp := make([]int, len(nums))
		copy(temp, nums)
		res = append(res, temp)
		return
	}
	for i := idx; i < len(nums); i++ {
		nums[i], nums[idx] = nums[idx], nums[i]
		backtrack(nums, idx+1)
		nums[i], nums[idx] = nums[idx], nums[i]
	}
}