020_全排列
知识点:回溯
LeetCode第四十六题:https://leetcode-cn.com/problems/permutations/
语言:GoLang
// 回溯解法
func permute(nums []int) [][]int {
result := [][]int{}
backtrack(nums, []int{}, &result)
return result
}
func backtrack(nums []int, track []int, result *[][]int) {
length := len(nums)
if 0 == length {
tmp := make([]int, len(track))
copy(tmp, track)
*result = append(*result, tmp)
return
}
for i := 0; i < length; i++ {
track = append(track, nums[i])
backtrack(append(append([]int{}, nums[0:i]...), nums[i+1:]...), track, result)
track = track[ : len(track) - 1]
}
return
}