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

昆明网站制作服务商站外推广平台有哪些

昆明网站制作服务商,站外推广平台有哪些,公司建设网站有什么好处,如何给公司建立网站电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的 字母组合。答案可以按 任意顺序 返回。 给出的数字到字母的映射如下(与电话按键相同): 2 -> "abc" 3 -> "def"…

电话号码的字母组合

题目描述

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的 字母组合。答案可以按 任意顺序 返回。

给出的数字到字母的映射如下(与电话按键相同):

2 -> "abc"  
3 -> "def"  
4 -> "ghi"  
5 -> "jkl"  
6 -> "mno"  
7 -> "pqrs"  
8 -> "tuv"  
9 -> "wxyz"

示例 1:

输入: digits = "23"
输出: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]

示例 2:

输入: digits = ""
输出: []

示例 3:

输入: digits = "2"
输出: ["a", "b", "c"]

解题思路

本题可以使用 回溯法(Backtracking) 来解决。

  1. 定义映射关系:使用 Map 数组存储 2-9 每个数字对应的字母。
  2. 回溯搜索:递归构造字符串,每次从当前数字的字母集中选择一个,并递归处理下一个数字。
  3. 终止条件:当路径长度等于输入数字长度时,将其加入 ans

代码实现

from typing import Listclass Solution:def letterCombinations(self, digits: str) -> List[str]:Map = ["", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]       n = len(digits)if not n:return []path = []ans = []def backtrack(n):if n == len(digits):ans.append(''.join(path.copy()))returnfor i in range(0, len(Map[int(digits[n])])):path.append(Map[int(digits[n])][i])backtrack(n+1)path.pop()backtrack(0)return ans

时空复杂度分析

时间复杂度

  • 每个数字最多对应 4 个字母,如果 digits 长度为 n,则组合数最多为 4^n
  • 时间复杂度:O(4^n)

空间复杂度

  • 递归调用栈 最多深度为 n,回溯过程中 path 存储当前路径,额外 O(n) 空间。
  • 结果列表 ans 可能存储 4^n 个字符串。
  • 总空间复杂度:O(n + 4^n)

回溯流程示例

digits = "23" 为例,回溯过程如下:

起始状态:[]选择 'a' → [a]  选择 'd' → [ad]  → 终止,加入结果回溯:移除 'd' → [a]选择 'e' → [ae]  → 终止,加入结果回溯:移除 'e' → [a]选择 'f' → [af]  → 终止,加入结果回溯:移除 'f' → []选择 'b' → [b]  选择 'd' → [bd]  → 终止,加入结果...选择 'f' → [bf]  → 终止,加入结果选择 'c' → [c]  选择 'd' → [cd]  → 终止,加入结果...选择 'f' → [cf]  → 终止,加入结果

最终输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]


易错点解析

为什么循环起点是0 而不像之前的题目为 n

如果起点为n,那么在遍历下一个字符串时,位置为0的字符串首位将永远遍历不到。

回溯函数参数为何传递 n+1 而不是 i+1

  • 这里 n 代表当前处理的数字位置,而不是选取的字母索引。
  • 递归进入下一层时,我们希望处理的是 digits[n+1] 对应的字母,而不是当前 digits[n] 的下一个字母。
  • 如果传递 i+1,则逻辑变为跳过部分字母,导致组合不完整。

为什么 path.copy() 必须在 ans.append() 中使用?

  • path 是一个可变列表,如果直接 append(path),在后续递归回溯修改 path 时,会影响 ans 中已经存储的内容。
  • path.copy() 生成一个新的列表,避免后续修改对 ans 产生影响。
http://www.dtcms.com/wzjs/92916.html

相关文章:

  • 手机怎样创建网站阿里指数
  • 做app和网站怎样网络营销产品的特点
  • 国内做的好的帽子网站8个公开大数据网站
  • dota2海涛做的网站谷歌排名优化
  • 手机网站jq导航菜单怎么推广自己的网站?
  • wordpress的网站站长工具seo综合查询
  • 公司如何做网站建设郑州seo网站关键词优化
  • 湖南电子科技网站建设恢复正常百度
  • 做ppt好的网站有哪些方面成都网站seo技巧
  • seo包括网站建设吗2024年3月新冠肺炎
  • oracle自带网站开发公司网站推广方案
  • 网站LOGO透明底色PNG格式怎么做的yandex搜索入口
  • 小说网站开发对影成三人小说游戏推广渠道有哪些
  • php网站如何导入数据库姓名查询
  • 莱芜企业网站建设公司站长统计ios
  • 住房和城乡建设部网站职称查询如何快速搭建网站
  • avada做网站线上广告平台
  • 网站建设全包哪家便宜河南做网站的公司
  • 学习网站建设网站中国企业网官方网站
  • wordpress制作404seo营销技巧培训班
  • 网站备案需先做网站吗关键词搜索引擎又称为
  • 大庆网站建设大庆汕头seo管理
  • 桂林景区网站建设策划方案识图
  • 德育工作网站建设方案天门seo
  • 注册个人公司需要什么条件网络优化是做啥的
  • 做企业网站选百度云还是阿里云怎么做网站卖产品
  • 东莞企业营销型网站关键词推广和定向推广
  • 怎么修改网站图片百度指数在线查询小程序
  • 黄河道网站建设公司百度推广入口官网
  • 网站项目整体思路网站快速收录的方法