代码随想录训练营Day25|组合总和III电话号码的字母组合

文章介绍了两个编程问题的解决方案,分别是LeetCode上的组合总和III问题,使用深度优先搜索(DFS)方法找出所有可能的整数组合,以及电话号码的字母组合问题,将数字映射到字母生成所有可能的字符串组合。
摘要由CSDN通过智能技术生成

目录

学习目标

学习内容

组合总和III

 电话号码的字母组合


学习目标

  • 组合总和III
  • 电话号码的字母组合

学习内容

组合总和III

216. 组合总和 IIIicon-default.png?t=N3I4https://leetcode.cn/problems/combination-sum-iii/

class Solution:
    def combinationSum3(self, k: int, n: int) -> List[List[int]]:
        def dfs(i,amount,tmp):
            if i>k+1 or amount>n:return
            if i==k+1 and amount==n:
                res.append(tmp[1:])
                return
            for j in range(tmp[-1]+1,min(10,n-amount+1)):
                tmp.append(j)
                dfs(i+1,amount+j,tmp)
                tmp.pop()

        res = []
        dfs(1,0,[0])
        return res

 电话号码的字母组合

17. 电话号码的字母组合 - 力扣(LeetCode)icon-default.png?t=N3I4https://leetcode.cn/problems/letter-combinations-of-a-phone-number/

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if not digits:return []
        tmp = ["","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]
        res = []
        n = len(digits)
        def dfs(i,ans):
            if i==n:
                res.append(ans)
                return 
            for s in tmp[int(digits[i])]:
                dfs(i+1,ans+s)
        dfs(0,"")
        return res

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值