首页 > 编程语言 >代码训练营第二十五天(Python)| 216.组合总和III 、17.电话号码的字母组合

代码训练营第二十五天(Python)| 216.组合总和III 、17.电话号码的字母组合

时间:2023-11-06 19:55:23浏览次数:56  
标签:216 digits 17 int res self 字母组合 path now

216.组合总和III

class Solution:
    def combinationSum3(self, k: int, n: int) -> List[List[int]]:
        res = []
        self.tracebacking(n, k, 1, 0, [], res)
        return res

    def tracebacking(self, targetsum, k, start, now_sum, path, res):
        if now_sum > targetsum:
            return

        if len(path) == k:
            if targetsum == now_sum:
                res.append(path[:])
            return

        for i in range(start, 9-(k-len(path))+2):
            path.append(i)
            now_sum += i
            self.tracebacking(targetsum, k, i+1, now_sum, path, res)
            now_sum -= i
            path.pop()

17.电话号码的字母组合

class Solution:

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

    def letterCombinations(self, digits: str) -> List[str]:
        res = []
        if not digits:
            return res
        self.tracebacking(digits, 0, [], res)
        return res


    def tracebacking(self, digits, start_index, path, res):
        if len(path) == len(digits):
            res.append("".join(path[:]))
            return

        digit_int = int(digits[start_index])
        letters = self.num_dict.get(digit_int)
        for letter in letters:
            path.append(letter)
            self.tracebacking(digits, start_index+1, path, res)
            path.pop()

标签:216,digits,17,int,res,self,字母组合,path,now
From: https://www.cnblogs.com/yixff/p/17808531.html

相关文章

  • VS 2017需要登陆
      解决方法:以管理员身份运行VS2017  检查更新的许可证,创建账号 用QQ邮箱就行,然后就可以使用了。因为我的是社区版。......
  • 日记 2022.12.17:22年实验中学秋季训练 6
    A.gym103428m问有多少个长度为\(n\)的01串,其中有\(m\)个是1,且最长连续的1的长度恰好是\(k\)。十万。Trick1容斥系数怎么算?Trick2限制了这个串的长度和\(1\)的个数,这意味着什么?插板的东西是什么?solution错解明显不顾最长连续段限制答案是$g(n,m)=\bin......
  • 软件项目管理 第3版 第17章习题答案 参考答案 项目结束
    [填空][终止]1、项目目标已经成功实现,可交付成果已经出现;或者项目无法继续进行,这时项目可以()了。[填空][制定结束计划,完成收尾工作,项目最后评审]2、项目结束过程包括(),(),()。[填空][是否在预算成本内完成项目]3、()、是否实现目标、是否达到项目客户的期望等都是检验项目成功与......
  • C++_17_多继承和虚基类 - 重写版
    多继承单继承:一个派生类只有一个基类,这就是单基类继承,简称“单继承”多继承:一个派生类允许有两个及以上的基类,这就是多基类继承,简称“多继承”单继承中,派生类是对基类的特例化,例如编程类书籍是书籍中的特例。而多继承中,派生类是所有基类的一种组合。在多继承中,派......
  • cf1709E. XOR Tree(启发式合并入门)
    cf1709E.XORTree贪心是显然的,关键是如何合并两棵子树的信息,可以采用启发式合并。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<map>#include<vector>#include<set>#include<ctime>#include<unordered_ma......
  • P3722 [AH2017/HNOI2017] 影魔
    题目链接Part1先想暴力,对于每次询问,可以直接\(\Theta(n^2)\)枚举数对,用\(ST\)表判断一下,复杂度为\(\Theta(qn^2)\)。发现枚举数对没有前途,考虑\((i,j)\)之间的最大值,发现一个数对产生的贡献只和区间的最大值有关,我们从这个最大值入手。我们把一个数对的贡献看做其区间最......
  • 大二快乐日记10.17
    1.配置多个<servlet-mapping>元素Servlet2.5规范之前,<servlet-mapping>元素只允许包含一个<url-pattern>子元素,若要实现Servet的多重映射,只能通过配置多个<servlet-mapping>元素实现。以serveltDemo为例,在web.xml中配置两个<servlet-mapping>元素,代码如下所示......
  • AtCoder Beginner Contest(abc) 317
    B-MissingNo.难度:⭐题目大意给定n个数,这n个数中最小值到最大值之间缺一个数,输出这个数;解题思路数据不大,暴力即可;神秘代码#include<bits/stdc++.h>#defineintlonglong#defineIOSios::sync_with_stdio(false),cin.tie(0),cout.tie(0)#defineendl......
  • 苹果iOS 17.2年底推送:iPhone 15 Pro的自定义操作按钮功能升级
    据报道,苹果会在年底推送iOS17.2版本,新版系统将会修复iPhone15系列WiFi速度慢的问题。与此同时,iOS17.2将会带来翻译功能,iPhone15Pro的自定义操作按钮切换到翻译选项后,按住会弹出一个翻译窗口,用于翻译设备听到的语音内容。除此之外,这枚自定义操作按钮还可以设置为其它很多功......
  • 2023-2024-20231317《计算机程序与设计》第六周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第六周作业)这个作业的目标<《计算机科学概论第7章》,《C语言程序设计》第5章>作业正文本博客原链接https......