码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 代码随想录算法训练营Day25|leetcode216 组合总和III,leetcode17 电话号码的字母组合


    leetcode216 组合总和III

    题目链接:216. 组合总和 III - 力扣(LeetCode)

    视频讲解:和组合问题有啥区别?回溯算法如何剪枝?| LeetCode:216.组合总和III_哔哩哔哩_bilibili

    文章讲解:代码随想录 (programmercarl.com)

    思路:跟昨天的题很像,定义一个一维数组存单条路径结果,定义一个二维数组存所有结果,定义一个sum记录当前和,start_index记录下一次回溯开始的地方。 这里可以有一个剪枝操作,如果在path里还没到k个数但是总和已经大于目标和了就可以直接返回。

    1. class Solution:
    2. def backtracking(self, path, result, n, k, sum, start_index):
    3. if sum > n:
    4. return #剪枝
    5. if len(path) == k :
    6. if sum == n:
    7. result.append(path[:])
    8. return
    9. for i in range(start_index, 10):
    10. sum += i
    11. path.append(i)
    12. self.backtracking(path, result, n, k, sum, i + 1)
    13. sum -= i
    14. path.pop()
    15. def combinationSum3(self, k: int, n: int) -> List[List[int]]:
    16. result = []
    17. self.backtracking([], result, n, k, 0, 1)
    18. return result

     leetcode17 电话号码的字母组合

    题目链接:17. 电话号码的字母组合 - 力扣(LeetCode)

    视频讲解:还得用回溯算法!| LeetCode:17.电话号码的字母组合_哔哩哔哩_bilibili

    文章讲解:代码随想录 (programmercarl.com)

    s思路,本题重点是将数字映射成字母。有点没懂,回头再看一遍 

    1. class Solution:
    2. def letterCombinations(self, digits: str) -> List[str]:
    3. if len(digits) == 0:
    4. return self.result
    5. self.backtracking(digits, 0)
    6. return self.result
    7. def __init__(self):
    8. self.leeterMap = [
    9. "", #0
    10. "", #1
    11. "abc", #2
    12. "def", #3
    13. "ghi", #4
    14. "jkl", #5
    15. "mno", #6
    16. "pqrs", #7
    17. "tuv", #8
    18. "wxyz", #9
    19. ]
    20. self.result = []
    21. self.s = ""
    22. def backtracking(self, digits, index):
    23. if index == len(digits):
    24. self.result.append(self.s)
    25. return
    26. digit = int(digits[index]) #将索引处的数字转化为整数
    27. letters = self.leeterMap[digit] #将数字转化为对应字母
    28. for i in range(len(letters)):
    29. self.s += letters[i]
    30. self.backtracking(digits, index + 1)
    31. self.s = self.s[:-1]

     

  • 相关阅读:
    【设计模式】Head First 设计模式——工厂方法模式 C++实现
    数据库迁移-国产化-Oracle迁移至GBase8a(存储过程)
    细数软件研发效能的七宗罪
    中兴通讯-000063 三季报分析(20231024)
    python利用joblib进行并行数据处理
    SQL基础查询与排序
    20_数组的常见操作
    (五)Selenium自动化测试实战—PO模式
    力扣爆刷第153天之TOP100五连刷31-35(合并区间、编辑距离、复原IP)
    交易者的意义是什么?
  • 原文地址:https://blog.csdn.net/weixin_48821824/article/details/132635601
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号