46. 全排列

71 阅读1分钟

题目:
给定一个不含重复数字的数组 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
}