DFS/回溯算法
回溯算法模板:
result = [] def backtrack(路径, 选择列表): if 满⾜结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, 选择列表) 撤销选择
力扣46题
func permute(nums []int) [][]int {
ans := make([][]int, 0)
track := make([]int, 0)
visited := map[int]bool{}
sort.Ints(nums)
var backtrack func()
backtrack = func() {
if len(track) == len(nums) {
ans = append(ans, append([]int{}, track...))
return
}
for i := 0; i < len(nums); i++ {
if visited[i] {
continue
}
visited[i] = true
track = append(track, nums[i])
backtrack()
visited[i] = false
track = track[:len(track)-1]
}
}
backtrack()
return ans
}

浙公网安备 33010602011771号