mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
update 0077.组合优化: 更换 go 代码
This commit is contained in:
@ -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]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Reference in New Issue
Block a user