leetcode hot100 17. 电话号码的字母组合 medium 递归回溯

每一层选择"当前数字"对应的一个字母。

python 复制代码
phone = {
    "2": "abc",
    "3": "def",
    "4": "ghi",
    "5": "jkl",
    "6": "mno",
    "7": "pqrs",
    "8": "tuv",
    "9": "wxyz"
}

切片回溯

python 复制代码
class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if not digits:
            return []

        phone = {
            "2": "abc", "3": "def",
            "4": "ghi", "5": "jkl",
            "6": "mno", "7": "pqrs",
            "8": "tuv", "9": "wxyz"
        }

        res = []

        def backtrack(digits, tmp):  #(待选列表,已有排列)
        	 #待选列表为空(所有数字有选完了)
            if not digits:
                res.append(tmp)  # 当前排列加入res
                return 

            letters = phone[digits[0]]   # 待选列表的第一个数字,对应的phone字母
            for ch in letters:
                # 递归,继续选下一个digits数字
                backtrack(digits[1:], tmp + ch)

    
        backtrack(digits, "")
        return res

时间复杂度:O(3ⁿ × n)

每个数字平均对应 3 个字母,字符串长度 n

空间复杂度:

切片写法每层都会创建新字符串:O(n^2)

相关推荐
武帝为此29 分钟前
【数据清洗缺失值处理】
python·算法·数学建模
zhangchaoxies1 小时前
如何在 Go 中安全复制接口指针所指向的值
jvm·数据库·python
曲幽1 小时前
FastAPI + Pydantic 模型终极实战手册:从能跑就行到固若金汤,这些技巧你一定用得上
python·fastapi·web·model·field·pydantic·validator·basemodel
计算机软件程序设计2 小时前
Python Flask工程目录解读
python·flask·工程目录解读
Ares-Wang2 小时前
Flask》》 Flask-OpenID 认证、 OpenID Connect (OIDC)
后端·python·flask
m0_734949792 小时前
怎么利用Navicat进行调整备份文件压缩等级_详细配置与操作步骤
jvm·数据库·python
m0_741173333 小时前
如何处理SQL中的NULL值_使用ISNULL或COALESCE函数
jvm·数据库·python
AC赳赳老秦3 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
步辞3 小时前
css伪类选择器-nth-child应用技巧_循环选择列表或表格行的实现方法
jvm·数据库·python
xcbrand4 小时前
快消品品牌策划公司哪家好
大数据·人工智能·python