leetcode:216.组合总和三

题目理解:

在组合的基础上,考虑组合的总和为n。

最直白的暴力方法是for循环嵌套n层,但是代码无法实现,因为n不确定。所以我们可以用递归几层来相当于循环嵌套几层实现。

树形结构:

for循环是按照[1,9]这个范围,树的宽度

深度是k,树的深度

代码:

1.定义path和result数组

2.参数targetSum,k,Sum,startIndex(初始化为1).

3.如果path的长度为而且targetSum和Sum相等,加入结果集

4.进入for循环后,计算Sum,新元素加入path,进入递归,重置Sum,弹出元素实现回溯。

剪枝操作:

1.在最前面判断targetSum和Sum的大小,若Sum已经大于targetSum,直接return

2.path长度不够k的话,直接剪枝。通过使得for循环里的i<=9变为i<=(9-(k-path.size)+1)即可。

leetcode:216.组合总和三_第1张图片

你可能感兴趣的:(leetcode,算法,职场和发展)