力扣地址:. - 力扣(LeetCode)
视频讲解:全排列算法超细致讲解,看完视频,代码两周忘不掉!_哔哩哔哩_bilibili
文字讲解:代码随想录
记录:这道题比较难啊感觉脑细胞要没了
总结下:其实只是需要一个book变量来做记录 一个path 来做临时变量 res来做变量 做递归即可 大家不懂的去看视频吧 感觉更容易理解
var (
book []bool
res [][]int
path []int
)
func permute(nums []int) [][]int {
res = make([][]int,0)
path = make([]int,0)
book = make([]bool,len(nums))
dfs(nums,0)
return res
}
func dfs(nums []int,step int){
if step == len(nums){
temp := make([]int,len(path))
copy(temp,path)
res = append(res,temp)
}
for i:=0;i<len(nums);i++{
if !book[i]{
path = append(path,nums[i])
book[i] = true
dfs(nums,step+1)
book[i] = false
path = path[:len(path) - 1]
}
}
}