算法题day24(补5.14日卡)

一、刷题:

1.leetcode题目 216. 组合总和 III - 力扣(LeetCode)

class Solution:
    def combinationSum3(self, k: int, n: int) -> List[List[int]]:
        path = []
        result = []
        def dfs(k,s_index,path,result,c_n,n):
            if c_n>n:
                return  ##剪枝操作
            if len(path) == k and c_n == n:
                result.append(path[:])
                return
            for i in range(s_index,9 - (k - len(path)) + 2):
                c_n += i
                path.append(i)
                dfs(k,i+1,path,result,c_n,n)
                path.pop()
                c_n -= i
        dfs(k,1,path,result,0,n)
        return result

2.leetcode题目 17. 电话号码的字母组合 - 力扣(LeetCode)

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if not digits:
            return list()
        
        phoneMap = {
            "2": "abc",
            "3": "def",
            "4": "ghi",
            "5": "jkl",
            "6": "mno",
            "7": "pqrs",
            "8": "tuv",
            "9": "wxyz",
        }

        def backtrack(index: int):
            if index == len(digits):
                combinations.append("".join(combination))
            else:
                digit = digits[index]
                for letter in phoneMap[digit]:
                    combination.append(letter)
                    backtrack(index + 1)
                    combination.pop()

        combination = list()
        combinations = list()
        backtrack(0)
        return combinations
                

(第二题有点没搞懂,明天再改一下)

自己编写版:

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if not digits:
            return list()
        
        Mapping = {
            "2": "abc",
            "3": "def",
            "4": "ghi",
            "5": "jkl",
            "6": "mno",
            "7": "pqrs",
            "8": "tuv",
            "9": "wxyz",
        }

        def dfs(index,result,combination):
            if index == len(digits):
                result.append("".join(combination))
            else:
                digit = digits[index]
                for letter in Mapping[digit]:
                   combination.append(letter)
                   dfs(index+1,result,combination)
                   combination.pop()
        result = []
        dfs(0,result,[])
        return result

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值