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

刷题笔记day27-回溯算法2

216. 组合总和 III

这个思路还是,三部曲:

  • 终止条件
  • 处理单层节点
  • 回溯节点

题中说的是,1到9的数,不能有重复。
k个数,和为n。
那么只要 len(path) == k 的时候,判断 n 为0,就可以入切片了。

func combinationSum3(k int, n int) [][]int {path = []int{}result = [][]int{}// tmpPath = make([]int, k)nfs(k, n, 1)return result
}var path []int
var tmpPath []int
var result [][]int
func nfs(k, n, startIndex int) bool {// 终止条件if (len(path) == k ) {if n == 0 {var tmpPath = make([]int, k)copy(tmpPath, path)result = append(result, tmpPath)}return true}// 广度遍历for i := startIndex; i <= 9; i++ {// 处理单个节点path = append(path, i)// 递归nfs(k, n-i, i+1)// 回溯if (len(path) > 0) {path = path[:len(path)-1]}}return true
}

17. 电话号码的字母组合

这个思路就是在,每一个startIndex,都是一个key,然后在横向遍历字符串
终止条件是,startIndex > maxIndex。此时就是每一个数字都遍历到了

var table = map[byte]string {'2': "abc",'3': "def",'4': "ghi",'5': "jkl",'6': "mno",'7': "qprs",'8': "tuv",'9': "wxyz",
}var digit string
var path []string
var result []stringfunc letterCombinations(digits string) []string {// 这个思路还是组合的问题if digits == "" {return []string{}}digit = digitspath = []string{}result = []string{}nfs(0, len(digits)-1)return result
}func nfs(currIndex, maxIndex int) bool {// 终止条件if currIndex > maxIndex {var tmp stringfor _, x := range path {tmp += x}result = append(result, tmp)return true}var key = digit[currIndex]var data = table[key]for i := 0; i < len(data); i++ {// 单个节点path = append(path, string(data[i]))nfs(currIndex+1, maxIndex)// 回溯if (len(path) > 0) {path = path[:len(path)-1]}}return true
}
http://www.lryc.cn/news/309440.html

相关文章:

  • 前端架构: 脚手架命令行交互核心实现之inquirer和readline的应用教程
  • 【C++初阶】内存管理
  • 《PyTorch深度学习实践》第十二讲循环神经网络基础
  • 蓝桥杯算法题汇总
  • 【MySQL】学习多表查询和笛卡尔积 - 副本
  • C++设计模式_创建型模式_工厂方法模式
  • matlab批量替换txt文本文件的特定行的内容
  • Qt Creator配置MSVC编译环境、调试环境
  • Linux系统运维命令:终止监听在 TCP端口80上的所有进程(使用lsof,grep,awk组合命令, 终止监听在 TCP某个端口上的所有进程)
  • 开源模型应用落地-业务优化篇(七)
  • 序列化-反序列化--json-xml-protoBuf
  • ubuntu 配置nacos开机启动
  • 单节点大数据平台运维脚本
  • HTML基础知识
  • 牛客禁用题:求阶乘
  • spring.factories的常用配置项
  • 数据库-第二/三章 关系数据库和标准语言SQL【期末复习|考研复习】
  • 【办公类-21-05】20240227单个word按“段落数”拆分多个Word(成果汇编 只有段落文字 1拆5)
  • 【前端素材】推荐优质后台管理系统网页my-Task平台模板(附源码)
  • Linux高负载排查最佳实践
  • 【python开发】网络编程(上)
  • php源码 单色bmp图片取模工具 按任意方式取模 生成字节数组 自由编辑点阵
  • 设计模式-命令模式(Command Pattern)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:位置设置)
  • ShardingJdbc实战-分库分表
  • 51单片机-(定时/计数器)
  • midjourney提示词语法
  • 【鸿蒙 HarmonyOS 4.0】路由router
  • AT24C1024的模拟IIC驱动
  • Stable Diffusion生成式扩散模型代码实现原理