DFS/回溯算法

回溯算法模板:

1
2
3
4
5
6
7
8
9
result = []
def backtrack(路径, 选择列表):
 if 满⾜结束条件:
 result.add(路径)
 return
 for 选择 in 选择列表:
 做选择
 backtrack(路径, 选择列表)
 撤销选择

  

力扣46题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
}

  

posted @   ☞@_@  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示