Skip to content

Commit b11b4d1

Browse files
committed
1
1 parent c826b22 commit b11b4d1

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

notes/src/SUMMARY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,5 @@
8888
- [day 25](./day25.md)
8989
- [216. 组合总和 III](./day25/lc216.md)
9090
- [17. 电话号码的字母组合](./day25/lc17.md)
91+
- [day 27](./day27.md)
92+
- [remains](./remains.md)

notes/src/day27.md

Whitespace-only changes.

notes/src/remains.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# 39. 组合总和
2+
3+
```cpp
4+
class Solution {
5+
public:
6+
vector<vector<int>>res;
7+
vector<int>cur;vector<int>candidates;
8+
int s=0,t;
9+
void bt(int start){
10+
if(s>=t){if(s==t)res.push_back(cur);return;}
11+
for(int j=start;j<candidates.size();j++){int i=candidates[j];
12+
cur.push_back(i);s+=i;
13+
bt(j);
14+
cur.pop_back();s-=i;
15+
}
16+
}
17+
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
18+
t=target;this->candidates=candidates;bt(0);return res;
19+
}
20+
};
21+
```
22+
23+
# 40.组合总和II
24+
25+
```cpp
26+
class Solution {
27+
public:
28+
vector<vector<int>>res;
29+
vector<int>cur;vector<int>candidates;
30+
int s=0,t;
31+
void bt(int start){
32+
if(s>=t){if(s==t)res.push_back(cur);return;}
33+
for(int j=start;j<candidates.size();j++){
34+
int i=candidates[j];
35+
36+
if(j>start&&candidates[j]==candidates[j-1])continue;
37+
cur.push_back(i);s+=i;
38+
bt(j+1);
39+
cur.pop_back();s-=i;
40+
}
41+
}
42+
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
43+
t=target;sort(candidates.begin(),candidates.end());this->candidates=candidates;bt(0);return res;
44+
}
45+
};
46+
```
47+
48+
`if(j>start&&candidates[j]==candidates[j-1])continue;`这而想了很久,一直以为是j大于0
49+
50+
为了结果不重复,所以剪枝是必须要进行的操作
51+
52+
# 131.分割回文串
53+
54+
```cpp
55+
class Solution {
56+
public:
57+
string s;vector<vector<string>>res;vector<string>cur;
58+
bool valid(int l,int r){
59+
int lptr=l,rptr=r;while(lptr<=r){if(s[lptr]!=s[rptr])return false;lptr++;rptr--;}return true;
60+
}
61+
void bt(int start){
62+
if(start==s.size()){res.push_back(cur);return;}
63+
for(int i=start;i<s.size();i++){
64+
if(valid(start,i)){
65+
cur.push_back(s.substr(start,i-start+1));
66+
bt(i+1);
67+
cur.pop_back();
68+
}
69+
}
70+
}
71+
vector<vector<string>> partition(string s) {
72+
this->s=s;bt(0);return res;
73+
}
74+
};
75+
```
76+
77+
# 93.复原IP地址
78+
79+
https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
80+
81+
```cpp
82+
class Solution {
83+
public:
84+
vector<string> restoreIpAddresses(string s) {
85+
86+
}
87+
};
88+
```

0 commit comments

Comments
 (0)