算法 第25天 回溯2

216 组合总和III

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:

只使用数字1到9;每个数字 最多使用一次 ;

返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

python 复制代码
def combineSum3(k:int,n:int)->'ListList[int]'
	result=[]
def backtracking(targetSum,k,currentSum,startIndex,path,result):
	if currentSum>targetSum:
		return
	if len(path)==k:
		if currentSum==targetSum:
			result.append(path[:])
		return 
	for i in range(startIndes,9-(k-len(path))+2):
		currentSum+=i
		path.append(i)
		backtracking(targetSum,k,currentSum,i+1,path,result)
		currentSum-=i
		path.pop()

17 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

思路

根据index获取digits中的一个digit,根据digit作索引找到letterMap对应letters,遍历(取一个letter,递归第二个digit...直到digits全部对应,加入到result中)

python 复制代码
letterMap=['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
def backtracking(digits,index):
	if index==len(digits):
		result.append(s)
		return 
	digit=int(digits[index])
	letters=letterMap[digit]
	for i in range(len(letters)):
		s+=letters[i]
		backtracking(digits,index+1)
		s=s[:-1]
		
def letterCombinations(digits:'str')->'List[str]':
	result=[]
	s=''
	if len(digits)=0:
		return []
	backtracking(digits,index=0)
	return result
	
  
	
相关推荐
MoRanzhi120321 小时前
Pillow 图像几何变换与仿射操作
python·pillow·几何学·图片处理·几何变换·仿射操作·图像裁剪
xzl0421 小时前
小智服务器:设备的各种MCP消息、初始化响应、工具列表和工具调用响应
java·网络·python
喵手21 小时前
Python爬虫零基础入门【第四章:解析与清洗·第3节】文本清洗:去空格、去噪、金额/日期/单位标准化!
爬虫·python·python爬虫实战·文本清洗·python爬虫工程化实战·python爬虫零基础入门·去空格去噪
mjhcsp21 小时前
P14977 [USACO26JAN1] Lineup Queries S(题解)
数据结构·c++·算法
喵手21 小时前
Python爬虫零基础入门【第四章:解析与清洗·第1节】BeautifulSoup 入门:从 HTML 提取结构化字段!
爬虫·python·beautifulsoup·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·beautifulsoup入门
应用市场21 小时前
CNN池化层深度解析:从原理到PyTorch实现
人工智能·pytorch·python
狐5721 小时前
2026-01-22-牛客每日一题-二进制不同位数
算法·牛客
小北方城市网21 小时前
微服务接口熔断降级与限流实战:保障系统高可用
java·spring boot·python·rabbitmq·java-rabbitmq·数据库架构
十八岁讨厌编程21 小时前
【算法训练营 · 二刷总结篇】链表、哈希表部分
算法·链表·散列表