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

Leetcode 17. 电话号码的字母组合

在这里插入图片描述

心路历程:

之前看过这道题的解法但是忘了。一开始想多重循环遍历,发现不知道写几个for循环,于是想到递归;发现递归需要记录选择的路径而不是返回节点值,想到了回溯。
回溯的解题模板:维护两个变量,分别是候选集合和路径

注意的点:

1、这里边的候选集合是digits里的每一个数,而不是digits的一部分子集之类的。
2、返回条件是 i = = n i==n i==n而不是 i = = n − 1 i==n-1 i==n1,因为i为n-1时候选集合还有digits的最后一个元素
3、这个递归不能加cache装饰器

class Solution:def letterCombinations(self, digits: str) -> List[str]:if not digits:return []maps = {2: 'abc', 3: 'def', 4: 'ghi', 5: 'jkl', 6:'mno', 7:'pqrs', 8:'tuv', 9:'wxyz'} n = len(digits)path = []res = []# 遍历digits中第i个数字def dfs(i):if i == n:res.append(''.join(path[:]))returnnum = int(digits[i])for c in maps[num]:path.append(c)dfs(i+1)path.pop()dfs(0)return res
http://www.lryc.cn/news/319307.html

相关文章:

  • 蓝桥杯单片机快速开发笔记——独立键盘
  • Swift 面试题及答案整理,最新面试题
  • 微信小程序上传图片c# asp.net mvc端接收案例
  • 57、服务攻防——应用协议RsyncSSHRDP漏洞批扫口令猜解
  • java:Druid工具类解析sql获取表名
  • MySQL--深入理解MVCC机制原理
  • 数据挖掘简介与应用领域概述
  • 瑞熙贝通打造智慧校园实验室安全综合管理平台
  • openstack调整虚拟机CPU 内存 磁盘 --来自gpt
  • 【IC设计】Verilog线性序列机点灯案例(三)(小梅哥课程)
  • 【打工日常】使用Docker部署团队协作文档工具
  • (一)Neo4j下载安装以及初次使用
  • QT for Mcu的学习建议
  • 【C语言初阶(五)】数组
  • 词令微信小程序怎么添加到我的小程序?
  • 【PyTorch】基础学习:在Pycharm等IDE中打印或查看Pytorch版本信息
  • SDN网络简单认识(2)——南向接口
  • 如何保存缓存和MySQL的双写一致呢?
  • 第十三篇:复习Java面向对象
  • PyTorch学习笔记之基础函数篇(四)
  • C++/CLI学习笔记3(快速打通c++与c#相互调用的桥梁)
  • unity
  • 考研复习C语言初阶(3)
  • CCF 202009-3 点亮数字人生(拓扑排序)
  • Docker笔记-进入运行中的镜像,查看日志等操作
  • 大语言模型(LLM) RAG概念
  • PHP使用AES进行加解密
  • 20240313寻找集成联调交付的具体方式
  • makefile 学习
  • 释放人工智能的力量:GPU服务器托管和高电机柜托管的关键作用