2023-12-23 组合总和 III和电话号码的字母组合

216. 组合总和 III

在这里插入图片描述

思路:使用回溯三部曲!① 确认需要传入的参数以及返回值 ② 回溯的终止条件 ③ 单层搜索的逻辑!这道题易错点在于单层的逻辑上的遍历起始位置以及回溯回退步骤里要执行的内容!

216.组合总和III

class Solution:def combinationSum3(self, k: int, n: int) -> List[List[int]]:result = []self.backtrack(k, n, 1,[], 0, result)return result# 回溯三部曲# 传入参数以及返回值def backtrack(self, k, n, start,temp_res,target, result):# 回溯条件if k == 0:if target == n:# 使用切片result.append(temp_res[:])return# 单层搜索过程for i in range(start, 10):# 剪枝操作if target > n:continuetemp_res.append(i)target += i# self.backtrack(k - 1, n, start + 1, temp_res, target, result)# 这里应该是i + 1的而不是start + 1self.backtrack(k - 1, n, i + 1, temp_res, target, result)temp_res.pop()# target也需要回退target -= i

17. 电话号码的字母组合

在这里插入图片描述

核心:依旧是回溯三部曲!有个点需要注意的是"".join(res),如果res是空的话,那么最终内容会是这样的[ “” ]而不是[ ]这样了!还不需要进行剪枝

17. 电话号码的字母组合

class Solution:def letterCombinations(self, digits: str) -> List[str]:dict_ziwu = {"2":['a','b','c'],"3":["d","e","f"],"4":["g","h","i"],"5":["j","k","l"],"6":["m","n","o"],"7":["p","q","r","s"],"8":["t","u","v"],"9":["w","x","y","z"]}length = len(digits)result = []# if digits == "":#     return resultself.backtrack(digits,0,length,[],result,dict_ziwu)return result# 回溯参数def backtrack(self, str1, start, length, res, result,dict_ziwu):# 回溯 终止条件if start == length:if res:result.append("".join(res))returnlist_temp = dict_ziwu[str1[start]]# 回溯单层搜索逻辑for _list in list_temp:res.append(_list)start += 1self.backtrack(str1,start,length,res,result,dict_ziwu)res.pop()start -= 1
# 优化版本
class Solution:def __init__(self):self.letterMap = ["",     # 0"",     # 1"abc",  # 2"def",  # 3"ghi",  # 4"jkl",  # 5"mno",  # 6"pqrs", # 7"tuv",  # 8"wxyz"  # 9]self.result = []self.s = ""def backtracking(self, digits, index):if index == len(digits):self.result.append(self.s)returndigit = int(digits[index])    # 将索引处的数字转换为整数!注意这里别弄混了!letters = self.letterMap[digit]    # 获取对应的字符集for i in range(len(letters)):self.s += letters[i]    # 处理字符self.backtracking(digits, index + 1)    # 递归调用,注意索引加1,处理下一个数字self.s = self.s[:-1]    # 回溯,删除最后添加的字符def letterCombinations(self, digits):if len(digits) == 0:return self.resultself.backtracking(digits, 0)return self.result

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305439.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 是如何执行的?

文章目录 命令执行流程步骤一:用户输入一条命令步骤二:客户端先将命令转换成 Redis 协议,然后再通过 socket 连接发送给服务器端步骤三:服务器端接收到命令步骤四:执行前准备步骤五:执行最终命令&#xff0…

docker学习(二十一、network使用示例container、自定义)

文章目录 一、container应用示例1.需要共用同一个端口的服务,不适用container方式2.可用示例3.停掉共享源的容器,其他容器只有本地回环lo地址 总结 二、自定义网络应用示例默认bridge,容器间ip通信默认bridge,容器间服务名不通 自…

关于设计模式、Java基础面试题

前言 之前为了准备面试,收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文:https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv 设计模式 单例共有几种写法? 细分起来就有9种:懒汉&#x…

常见算法(java版)

冒泡排序 每次从数组中找出最大值放在数组的后面去。 关键步骤 确定总共需要做几轮: 数组的长度-1。 每轮比较几次:数组的长度 - 第i轮。 当前位置大于后一个位置则交换数据。 选择排序 每轮选择当前位置,开始找出后面的较小值与该位置交换。 关键…

Keras多分类鸢尾花DEMO

完整的一个小demo: pandas1.2.4 numpy1.19.2 python3.9.2 import numpy as np import pandas as pd import matplotlib.pyplot as plt from pandas import DataFrame from scipy.io import loadmat from sklearn.model_selection import train_test_split impor…

【精选】vulnhub CTF5 NanoCMS漏洞 (青铜门笔记)

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

关于StartAI生图下载问题

最近小编常常收到一些小伙伴对StartAI生图的问题反馈,今天为大家同一解答吧! Q1:小编小编,为什么我生图后下载图片在文件夹中显示空白呀? 小编:当前我们StartAI版本0.4.5在下载图片时还未添加保存类型&…

Apache Commons Pool的对象池技术

第1章:引言 咱们今天来聊聊一个在Java开发中超级实用,但又经常被忽视的技术——对象池技术。可能你们已经听说过“对象池”这个名词,但对它的具体作用和重要性还有些模糊。别急,小黑带你们一步步深入了解。 想象一下&#xff0c…

产品经理如何培养思维模式和创新能力?

作为一名产品经理,我们需要具备一定的思维模式和创新能力,以应对不断变化的市场和技术环境。在本文中,我将分享一些培养产品经理思维模式和创新能力的方法。 一、培养市场洞察力 作为产品经理,我们需要深入了解市场和用户需求&a…

9种卷积注意力机制创新方法汇总,含2024最新

今天咱们来聊聊卷积注意力机制。 相信各位在写论文的时候都苦恼过怎么更好地改模型,怎么更高效地提高模型的性能和泛化能力吧?我的建议是,不妨考虑考虑卷积注意力。 卷积注意力机制是一种通过关注输入数据中的不同部分来改进模型性能的方法…

前端子项目共用node_modules

项目目录结构如下 首先按上面的结构新建三个项目,有一定前端经验的都知道怎么处理,我就不多介绍了。 1,子项目1 package.json如下,我只安装了vue index.js如下 2,子项目2 package.json如下,我安装了…

MLILY梦百合荣获巨量引擎“2023 Home M³ 年度内容种草奖”

12月27日,由巨量引擎主办的2024未来空间大会在海南三亚举办,本届大会以“全域驱动破界增长”为主题,汇聚家居家装行业优秀企业,共同探讨在产业调整期中,家居家装企业如何利用抖音平台做好全域营销、实现逆势增长。大会颁发了巨量引擎“Home M”系列奖项,MLILY梦百合与亚朵星球、…