代码随想录算法训练营|day25
第七章 回溯算法
- 216.组合总和III
- 17.电话号码的字母组合
- 代码随想录文章详解
- 总结
216.组合总和III
回溯:i宽度约束,sum深度约束
func combinationSum3(k int, n int) [][]int {
res := [][]int{}
path := []int{}
var help func(startIndex, sum, k, n int)
help = func(startIndex, sum, k, n int) {
if len(path) == k {
if sum == n {
tmp := make([]int, k)
copy(tmp, path)
res = append(res, tmp)
}
return
}
for i := startIndex; i <= 9 - (k - len(path)) + 1; i++ {
path = append(path, i)
help(i + 1, sum + i, k, n)
path = path[:len(path) - 1]
}
}
help(1, 0, k, n)
return res
}
17.电话号码的字母组合
回溯:path用来处理路径上的结果参数;递归函数用来寻找可能符合要求的路径 ;回溯是为了保证路线之间的独立性
func letterCombinations(digits string) []string {
res := []string{}
if len(digits) == 0 {
return res
}
var path []byte
phoneMap := map[string]string{
"2": "abc",
"3": "def",
"4": "ghi",
"5": "jkl",
"6": "mno",
"7": "pqrs",
"8": "tuv",
"9": "wxyz",
}
var help func(index int, digits string)
help = func(index int, digits string) {
if len(path) == len(digits) {
res = append(res, string(path))
return
}
num := string(digits[index])
if chars, ok := phoneMap[num]; ok {
for i := 0; i < len(chars); i++ {
path = append(path, []byte(chars)[i])
help(index+1, digits)
path = path[:len(path)-1]
}
}
}
help(0, digits)
return res
}
代码随想录文章详解
216.组合总和III
17.电话号码的字母组合
总结
半知半解🤔
原文地址:https://blog.csdn.net/weixin_43785190/article/details/136002719
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/227188.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/227188.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!