根据搜索起点画出二叉树
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
# 中间变量以及结果数组
res = []
results = []
# 回溯函数
def dfs(i = 0):
# 递归出口
if len(res) == k:
results.append(res[:])
return
for j in range(i, n):
# 加入元素
res.append(j + 1)
# 深度搜索
dfs(j + 1)
# 回溯
res.pop()
dfs()
return results
根据搜索起点画出二叉树(起点剪枝优化)
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
# 中间变量以及结果数组
res = []
results = []
# 回溯函数
def dfs(i = 0):
# 递归出口,记录结果
if len(res) == k:
results.append(res[:])
return
# 通过起点剪枝
for j in range(i, n - (k - len(res)) + 1):
# 添加元素
res.append(j + 1)
# 深度搜索
dfs(j + 1)
# 回溯
res.pop()
dfs()
return results
按照每一个数选与不选画出二叉树
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
# 中间变量以及结果数组
res = []
results = []
# 回溯函数
def dfs(i = 0):
# 到达叶节点
if len(res) == k:
results.append(res[:])
return
# 剪枝
if i > n - (k - len(res)):
return
'''
添加该元素
'''
# 添加元素
res.append(i + 1)
# 深度搜索
dfs(i + 1)
# 回溯
res.pop()
'''
不添加该元素
'''
dfs(i + 1)
dfs()
return results
小黑生活
体检报告一切正常,被通知不被录取
一个人孤独的疯狂星期四
肯德基早餐
午饭湖南小碗饭
晚饭肯德基
发现了新款小黄车
哈根达斯咖啡简历投递
晚上找煤球黑驴喝酒喽,希望小黑能快速走出来,听了小黑发生的事情都不可思议
买的石榴汁终于到货了,快递员送错楼了,推迟了一天,但我并没有责怪他,毕竟大家谁活着都不容易
第一次喝M-stand,口感确实不错