当前位置: 首页 > article >正文

代码随想录算法训练营|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

相关文章:

  • 2024 AI 前端:回首展望,光芒未至,破晓之前!
  • 科普类——双目视觉在自动驾驶中存在的问题、挑战以及解决方案(三)
  • Linux基础知识总结(包含各种命令详解)
  • 未来电话呼叫技术的社会影响与发展趋势----云微呼
  • Python 数据分析(PYDA)第三版(一)
  • Open CASCADE学习|拓扑变换
  • vit细粒度图像分类(九)RAMS-Trans学习笔记
  • ChatGPT高效提问—基础知识(NLP)
  • 政安晨:示例演绎Python的函数与获取帮助的方法
  • vscode无法ssh远程连接到服务器:远程主机可能不符合 glibc 和 libstdc++ VS Code 服务器的先决条件
  • 01神经网络的理论及实现
  • 【开源】SpringBoot框架开发大学计算机课程管理平台
  • LeetCode第 123 场双周赛个人题解
  • 网络原理-TCP/IP(5)
  • Matplotlib箱形图的绘制与高级技巧解析【第57篇—python:Matplotlib箱形图】
  • 成都爱尔周进解析半飞秒手术--充满多样性的屈光手术方式
  • docker elasticsearch8启动失败
  • 初始mach-o文件及在项目中应用
  • Web实战丨基于django+hitcount的网页计数器
  • 编程笔记 html5cssjs 077 Javascript 关键字