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
}
posted @ 2020-03-14 16:34  Cenyol  阅读(94)  评论(0)    收藏  举报