LC216 组合总和3
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:
1. 只使用数字1到9;2. 每个数字 最多使用一次。
返回所有可能的有效组合的列表 。组合可以以任何顺序返回
class Solution:
def combinationSum3(self, k: int, n: int) -> List[List[int]]:
path, paths =[], []
pathsum = 0
def backtracking(startindex):
nonlocal pathsum
if len(path) == k and pathsum == n:
paths.append(path[:])
return
if pathsum > n:
return
for i in range(startindex, 10):
path.append(i)
pathsum += i
backtracking(i+1) # i+1 误写成了index+1,浪费了一些调试时间
path.pop()
pathsum -= i
backtracking(1)
return paths
LC17 电话号码
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
给出两个测试用例:
输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
输入:digits = "" 输出:[]
思路:建立一个map,用数组或者用字典。第一次写的时候没考虑digits为空的情况,晚上再写一遍还是一样的错误提示,⚠️要注意哦。
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
map = [ [],[],['a','b','c'], \
['d','e','f'], ['g','h','i'],\
['j','k','l'], ['m','n','o'], \
['p','q','r','s'],['t','u', 'v'], \
['w','x','y','z']]
path, paths = [], []
p = 0
if not digits: return []
if digits == '1': return []
def backtracking(strs):
nonlocal p
if p == len(digits):
paths.append(''.join(path))
return
for i in map[int(digits[p])]:
path.append(i)
p += 1
backtracking(strs)
p -= 1
path.pop()
backtracking(digits)
return paths
安慰自己:开始新的概念,做题老出错,需要调试总是难免的,加油。