Skip to content

Commit 29a3dca

Browse files
Update
1 parent a5f6650 commit 29a3dca

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ backtracking() {
477477

478478
大家好,我是程序员Carl,ACM 校赛、黑龙江省赛、东北四省赛金牌,和亚洲区域赛铜牌获得者,哈工大计算机硕士毕业,先后在腾讯和百度从事后端技术研发,CSDN博客专家。对算法和C++后端技术有一定的见解,利用工作之余重新刷leetcode。
479479

480-
**加我的微信,备注:组队刷题**, 拉你进刷题群,每天一道经典题目分析,而且题目不是孤立的,每一道题目之间都是有关系的,都是由浅入深一脉相承的,所以学习效果最好是每篇连续着看,也许之前你会某些知识点,但是一直没有把知识点串起来,这里每天一篇文章就会帮你把知识点串起来。我也花了不少精力来整理我的题解,**而且我不会在群里发任何广告,纯自己学习和分享。 欢迎你的加入!**
480+
**加我的微信,备注:「个人简单介绍」+「组队刷题**, 拉你进刷题群,每天一道经典题目分析,而且题目不是孤立的,每一道题目之间都是有关系的,都是由浅入深一脉相承的,所以学习效果最好是每篇连续着看,也许之前你会某些知识点,但是一直没有把知识点串起来,这里每天一篇文章就会帮你把知识点串起来。我也花了不少精力来整理我的题解,**而且我不会在群里发任何广告,纯自己学习和分享。 欢迎你的加入!**
481481

482482
<a name="微信"></a>
483483
<img src="https://img-blog.csdnimg.cn/20200712232919673.jpeg" data-img="1" width="175" height="175">

pics/216.组合总和III.png

86.6 KB
Loading

problems/0216.组合总和III.md

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,37 +18,65 @@
1818

1919
# 思路
2020

21+
这道题目注意一下几点:
22+
23+
* 解集不能包含重复的组合。 说明不用去重了,难度就小一些。
24+
* 求的是组合,那么集合没有顺序,for里面依然要从startIndex开始(如果是排列的话,就从0开始)
25+
26+
本题k相当于限制了树的深度,9就是树的宽度。
27+
28+
选取过程如图:
29+
30+
<img src='../pics/216.组合总和III.png' width=600> </img></div>
31+
32+
那么这还是一道标准的模板题,模板:
33+
34+
```
35+
backtracking() {
36+
if (终止条件) {
37+
存放结果;
38+
}
39+
40+
for (选择:选择列表(可以想成树中节点孩子的数量)) {
41+
递归,处理节点;
42+
backtracking();
43+
回溯,撤销处理结果
44+
}
45+
}
46+
```
47+
48+
2149

2250
# C++代码
2351

2452
```
2553
class Solution {
2654
private:
2755
vector<vector<int>> result;
28-
void backtracking(int target, int k, vector<int>& vec, int num, int sum, int startIndex) {
56+
vector<int> path;
57+
void backtracking(int target, int k, int num, int sum, int startIndex) {
2958
if (sum > target || num > k) {
3059
return;
3160
}
3261
if (num == k && sum == target) {
33-
result.push_back(vec);
62+
result.push_back(path);
3463
return;
3564
}
3665
3766
for (int i = startIndex; i <= 9; i++) {
3867
sum += i;
39-
vec.push_back(i);
68+
path.push_back(i);
4069
num++;
41-
backtracking(target, k, vec, num, sum, i + 1);
70+
backtracking(target, k, num, sum, i + 1);
4271
num--;
4372
sum -= i;
44-
vec.pop_back();
73+
path.pop_back();
4574
}
4675
}
4776
4877
public:
4978
vector<vector<int>> combinationSum3(int k, int n) {
50-
vector<int> vec;
51-
backtracking(n, k, vec, 0, 0, 1);
79+
backtracking(n, k, 0, 0, 1);
5280
return result;
5381
5482
}

0 commit comments

Comments
 (0)