update 0077.组合优化: 更换 go 代码

This commit is contained in:
Yuhao Ju
2022-12-07 20:19:23 +08:00
committed by GitHub
parent 380fabb247
commit 0cba0854d3

View File

@ -133,7 +133,7 @@ public:
# 总结 # 总结
本篇我们对求组合问题的回溯法代码做了剪枝优化,这个优化如果不画图的话,其实不好理解,也不好讲清楚。 本篇我们对求组合问题的回溯法代码做了剪枝优化,这个优化如果不画图的话,其实不好理解,也不好讲清楚。
所以我依然是把整个回溯过程抽象为一棵树形结构,然后可以直观的看出,剪枝究竟是剪的哪里。 所以我依然是把整个回溯过程抽象为一棵树形结构,然后可以直观的看出,剪枝究竟是剪的哪里。
@ -194,28 +194,28 @@ class Solution:
``` ```
Go Go
```Go ```Go
var res [][]int var (
path []int
res [][]int
)
func combine(n int, k int) [][]int { func combine(n int, k int) [][]int {
res=[][]int{} path, res = make([]int, 0, k), make([][]int, 0)
if n <= 0 || k <= 0 || k > n { dfs(n, k, 1)
return res return res
} }
backtrack(n, k, 1, []int{})
return res func dfs(n int, k int, start int) {
} if len(path) == k {
func backtrack(n,k,start int,track []int){ tmp := make([]int, k)
if len(track)==k{ copy(tmp, path)
temp:=make([]int,k) res = append(res, tmp)
copy(temp,track)
res=append(res,temp)
}
if len(track)+n-start+1 < k {
return return
} }
for i:=start;i<=n;i++{ for i := start; i <= n - (k-len(path)) + 1; i++ {
track=append(track,i) path = append(path, i)
backtrack(n,k,i+1,track) dfs(n, k, i+1)
track=track[:len(track)-1] path = path[:len(path)-1]
} }
} }
``` ```