跳转至

LC46 - 全排列

Permutations.go
package Backtrack

func permute(nums []int) [][]int {
    result := make([][]int, 0)
    size := len(nums)
    var f func(i int)
    f = func(i int) {
        if i == size {
            tmp := make([]int, size)
            copy(tmp, nums)
            result = append(result, tmp)
            return
        }
        for j := i; j < size; j++ {
            nums[i], nums[j] = nums[j], nums[i]
            f(i + 1)
            nums[i], nums[j] = nums[j], nums[i]
        }
    }
    f(0)
    return result
}