当前位置: 首页 > news >正文

算法第21天 | 第77题. 组合、216. 组合总和 III、17. 电话号码的字母组合

回溯基础概念

什么是回溯?

如何实现回溯?

第77题. 组合

题目

在这里插入图片描述

思路与解法

carl的讲解: 回溯搜索法

class Solution:def combine(self, n: int, k: int) -> List[List[int]]:self.path = []self.res = []self.backtracking(n, k, 1)return self.resdef backtracking(self, n, k, startIdx):if len(self.path) == k:self.res.append(self.path[:]) # 遍历path里面的值再存入res中,不然存入的是path的引用,这样存入res中的值就会跟着path变了print(self.path)returnif startIdx > n:returni = startIdxwhile i <= n:self.path.append(i)self.backtracking(n, k, i + 1)self.path.pop()i += 1

216. 组合总和 III

题目

在这里插入图片描述

思路与解法

第一想法: 很类似于上一道题,只是终止条件不一样

class Solution:def combinationSum3(self, k: int, n: int) -> List[List[int]]:self.path = []self.sum = 0self.res = []self.backtracking(k, n, 1)return self.resdef backtracking(self, k, n, startIdx):if self.sum == n and len(self.path) == k:self.res.append(self.path[:])returnif len(self.path) > k or self.sum > n or startIdx > 9:returni = startIdxwhile i < 10:self.path.append(i)self.sum += iself.backtracking(k, n, i+1)self.path.pop()self.sum -= ii += 1

17. 电话号码的字母组合

题目

在这里插入图片描述

思路与解法

第一想法: 先用字典存入数字和字母的对应关系,然后使用回溯法遍历每个字母段。递归的退出条件是当前取字母的地方是最后一个字母段。

class Solution:def letterCombinations(self, digits: str) -> List[str]:if not digits:return []self.dig2char = {'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}self.chars = []self.res = []self.path = []for item in digits:self.chars.append(self.dig2char.get(item))self.backtracking(0)return self.resdef backtracking(self,starIdx):if starIdx >= len(self.chars):self.res.append("".join(self.path))returnchars = self.chars[starIdx]for char in chars:self.path.append(char)self.backtracking(starIdx + 1)self.path.pop()

相关文章:

  • React方向:react的基本语法-数据渲染
  • API 玩出新花样:我如何构建自己的智能翻译助手
  • 08 Nginx模块
  • 【Docker】Docker Compose方式搭建分布式协调服务(Zookeeper)集群
  • Text2SQL:自助式数据报表开发---0517
  • Java求职者面试:从Spring Boot到微服务的技术点解析
  • 【GESP】C++三级真题 luogu-B3925 [GESP202312 三级] 小猫分鱼
  • 【PostgreSQL系列】PostgreSQL 复制参数详解
  • MLLM常见概念通俗解析(四)
  • 项目的部署发布和访问的流程
  • Jsoup库和Apache HttpClient库有什么区别?
  • 嵌入式学习笔记 - U(S)ART 模块HAL 库函数总结
  • [C++面试] const相关面试题
  • C# 深入理解类(成员常量)
  • Android 性能优化入门(一)—— 数据结构优化
  • 学习黑客Kerberos深入浅出:安全王国的门票系统
  • 利用html制作简历网页和求职信息网页
  • 【Linux笔记】——线程同步条件变量与生产者消费者模型的实现
  • Go 与 Gin 搭建简易 Postman:实现基础 HTTP 拨测的详细指南
  • window自带截图快捷键
  • 中国新闻发言人论坛在京举行,郭嘉昆:让中国声音抢占第一落点
  • 马上评|重病老人取款身亡,如何避免类似悲剧?
  • 牛市早报|持续推进城市更新行动意见印发,证监会强化上市公司募资监管
  • 车建兴被留置:跌落的前常州首富和红星系重整迷路
  • 证监会:2024年依法从严查办证券期货违法案件739件,作出处罚决定592件、同比增10%
  • 中央军委决定调整组建3所军队院校