LeetCode讲解篇之46. 全排列

LeetCode讲解篇之46. 全排列

文章目录

  • LeetCode讲解篇之46. 全排列
  • 题目描述
  • 题解思路
  • 题解代码

题目描述

LeetCode讲解篇之46. 全排列_第1张图片

题解思路

深度优先遍历, 遍历当前数组, 以当前的前缀再去深度优先遍历求所有组合, 然后将结果附加起来, 最后返回

题解代码

func permute(nums []int) [][]int {
    var res = make([][]int, 0)
    var dfs func(nums []int, prefix []int)
    dfs = func(nums []int, prefix []int) {
        if len(nums) == 1 {
            res = append(res, append(prefix, nums[0]))
            return
        }
        for i := 0; i < len(nums); i++ {
            dfs(append(append([]int(nil), nums[:i]...), nums[i+1:]...),
            append(append([]int(nil), prefix...), nums[i]))
        }
    }
    dfs(nums, []int(nil))
    return res
}

你可能感兴趣的:(数据结构与算法,leetcode,深度优先,算法)