Skip to content

Commit 2071c73

Browse files
authored
feat: update cpp dfs solutions (#3874)
1 parent 2ea23e2 commit 2071c73

File tree

187 files changed

+725
-726
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+725
-726
lines changed

solution/0100-0199/0198.House Robber/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -119,16 +119,16 @@ public:
119119
int n = nums.size();
120120
int f[n];
121121
memset(f, -1, sizeof(f));
122-
auto dfs = [&](auto&& dfs, int i) -> int {
122+
auto dfs = [&](this auto&& dfs, int i) -> int {
123123
if (i >= n) {
124124
return 0;
125125
}
126126
if (f[i] < 0) {
127-
f[i] = max(nums[i] + dfs(dfs, i + 2), dfs(dfs, i + 1));
127+
f[i] = max(nums[i] + dfs(i + 2), dfs(i + 1));
128128
}
129129
return f[i];
130130
};
131-
return dfs(dfs, 0);
131+
return dfs(0);
132132
}
133133
};
134134
```

solution/0100-0199/0198.House Robber/README_EN.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -118,16 +118,16 @@ public:
118118
int n = nums.size();
119119
int f[n];
120120
memset(f, -1, sizeof(f));
121-
auto dfs = [&](auto&& dfs, int i) -> int {
121+
auto dfs = [&](this auto&& dfs, int i) -> int {
122122
if (i >= n) {
123123
return 0;
124124
}
125125
if (f[i] < 0) {
126-
f[i] = max(nums[i] + dfs(dfs, i + 2), dfs(dfs, i + 1));
126+
f[i] = max(nums[i] + dfs(i + 2), dfs(i + 1));
127127
}
128128
return f[i];
129129
};
130-
return dfs(dfs, 0);
130+
return dfs(0);
131131
}
132132
};
133133
```

solution/0100-0199/0198.House Robber/Solution.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ class Solution {
44
int n = nums.size();
55
int f[n];
66
memset(f, -1, sizeof(f));
7-
auto dfs = [&](auto&& dfs, int i) -> int {
7+
auto dfs = [&](this auto&& dfs, int i) -> int {
88
if (i >= n) {
99
return 0;
1010
}
1111
if (f[i] < 0) {
12-
f[i] = max(nums[i] + dfs(dfs, i + 2), dfs(dfs, i + 1));
12+
f[i] = max(nums[i] + dfs(i + 2), dfs(i + 1));
1313
}
1414
return f[i];
1515
};
16-
return dfs(dfs, 0);
16+
return dfs(0);
1717
}
1818
};

solution/0200-0299/0233.Number of Digit One/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public:
158158
int m = s.size();
159159
int f[m][m];
160160
memset(f, -1, sizeof(f));
161-
auto dfs = [&](auto&& dfs, int i, int cnt, bool limit) -> int {
161+
auto dfs = [&](this auto&& dfs, int i, int cnt, bool limit) -> int {
162162
if (i >= m) {
163163
return cnt;
164164
}
@@ -168,14 +168,14 @@ public:
168168
int up = limit ? s[i] - '0' : 9;
169169
int ans = 0;
170170
for (int j = 0; j <= up; ++j) {
171-
ans += dfs(dfs, i + 1, cnt + (j == 1), limit && j == up);
171+
ans += dfs(i + 1, cnt + (j == 1), limit && j == up);
172172
}
173173
if (!limit) {
174174
f[i][cnt] = ans;
175175
}
176176
return ans;
177177
};
178-
return dfs(dfs, 0, 0, true);
178+
return dfs(0, 0, true);
179179
}
180180
};
181181
```

solution/0200-0299/0233.Number of Digit One/README_EN.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public:
158158
int m = s.size();
159159
int f[m][m];
160160
memset(f, -1, sizeof(f));
161-
auto dfs = [&](auto&& dfs, int i, int cnt, bool limit) -> int {
161+
auto dfs = [&](this auto&& dfs, int i, int cnt, bool limit) -> int {
162162
if (i >= m) {
163163
return cnt;
164164
}
@@ -168,14 +168,14 @@ public:
168168
int up = limit ? s[i] - '0' : 9;
169169
int ans = 0;
170170
for (int j = 0; j <= up; ++j) {
171-
ans += dfs(dfs, i + 1, cnt + (j == 1), limit && j == up);
171+
ans += dfs(i + 1, cnt + (j == 1), limit && j == up);
172172
}
173173
if (!limit) {
174174
f[i][cnt] = ans;
175175
}
176176
return ans;
177177
};
178-
return dfs(dfs, 0, 0, true);
178+
return dfs(0, 0, true);
179179
}
180180
};
181181
```

solution/0200-0299/0233.Number of Digit One/Solution.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class Solution {
55
int m = s.size();
66
int f[m][m];
77
memset(f, -1, sizeof(f));
8-
auto dfs = [&](auto&& dfs, int i, int cnt, bool limit) -> int {
8+
auto dfs = [&](this auto&& dfs, int i, int cnt, bool limit) -> int {
99
if (i >= m) {
1010
return cnt;
1111
}
@@ -15,13 +15,13 @@ class Solution {
1515
int up = limit ? s[i] - '0' : 9;
1616
int ans = 0;
1717
for (int j = 0; j <= up; ++j) {
18-
ans += dfs(dfs, i + 1, cnt + (j == 1), limit && j == up);
18+
ans += dfs(i + 1, cnt + (j == 1), limit && j == up);
1919
}
2020
if (!limit) {
2121
f[i][cnt] = ans;
2222
}
2323
return ans;
2424
};
25-
return dfs(dfs, 0, 0, true);
25+
return dfs(0, 0, true);
2626
}
2727
};

solution/0300-0399/0332.Reconstruct Itinerary/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -131,16 +131,16 @@ public:
131131
g[ticket[0]].push_back(ticket[1]);
132132
}
133133
vector<string> ans;
134-
auto dfs = [&](auto&& dfs, string& f) -> void {
134+
auto dfs = [&](this auto&& dfs, string& f) -> void {
135135
while (!g[f].empty()) {
136136
string t = g[f].back();
137137
g[f].pop_back();
138-
dfs(dfs, t);
138+
dfs(t);
139139
}
140140
ans.emplace_back(f);
141141
};
142142
string f = "JFK";
143-
dfs(dfs, f);
143+
dfs(f);
144144
reverse(ans.begin(), ans.end());
145145
return ans;
146146
}

solution/0300-0399/0332.Reconstruct Itinerary/README_EN.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -129,16 +129,16 @@ public:
129129
g[ticket[0]].push_back(ticket[1]);
130130
}
131131
vector<string> ans;
132-
auto dfs = [&](auto&& dfs, string& f) -> void {
132+
auto dfs = [&](this auto&& dfs, string& f) -> void {
133133
while (!g[f].empty()) {
134134
string t = g[f].back();
135135
g[f].pop_back();
136-
dfs(dfs, t);
136+
dfs(t);
137137
}
138138
ans.emplace_back(f);
139139
};
140140
string f = "JFK";
141-
dfs(dfs, f);
141+
dfs(f);
142142
reverse(ans.begin(), ans.end());
143143
return ans;
144144
}

solution/0300-0399/0332.Reconstruct Itinerary/Solution.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@ class Solution {
77
g[ticket[0]].push_back(ticket[1]);
88
}
99
vector<string> ans;
10-
auto dfs = [&](auto&& dfs, string& f) -> void {
10+
auto dfs = [&](this auto&& dfs, string& f) -> void {
1111
while (!g[f].empty()) {
1212
string t = g[f].back();
1313
g[f].pop_back();
14-
dfs(dfs, t);
14+
dfs(t);
1515
}
1616
ans.emplace_back(f);
1717
};
1818
string f = "JFK";
19-
dfs(dfs, f);
19+
dfs(f);
2020
reverse(ans.begin(), ans.end());
2121
return ans;
2222
}
23-
};
23+
};

solution/0300-0399/0341.Flatten Nested List Iterator/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -212,16 +212,16 @@ public class NestedIterator implements Iterator<Integer> {
212212
class NestedIterator {
213213
public:
214214
NestedIterator(vector<NestedInteger>& nestedList) {
215-
auto dfs = [&](auto&& dfs, vector<NestedInteger>& ls) -> void {
215+
auto dfs = [&](this auto&& dfs, vector<NestedInteger>& ls) -> void {
216216
for (auto& x : ls) {
217217
if (x.isInteger()) {
218218
nums.push_back(x.getInteger());
219219
} else {
220-
dfs(dfs, x.getList());
220+
dfs(x.getList());
221221
}
222222
}
223223
};
224-
dfs(dfs, nestedList);
224+
dfs(nestedList);
225225
}
226226

227227
int next() {

solution/0300-0399/0341.Flatten Nested List Iterator/README_EN.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -210,16 +210,16 @@ public class NestedIterator implements Iterator<Integer> {
210210
class NestedIterator {
211211
public:
212212
NestedIterator(vector<NestedInteger>& nestedList) {
213-
auto dfs = [&](auto&& dfs, vector<NestedInteger>& ls) -> void {
213+
auto dfs = [&](this auto&& dfs, vector<NestedInteger>& ls) -> void {
214214
for (auto& x : ls) {
215215
if (x.isInteger()) {
216216
nums.push_back(x.getInteger());
217217
} else {
218-
dfs(dfs, x.getList());
218+
dfs(x.getList());
219219
}
220220
}
221221
};
222-
dfs(dfs, nestedList);
222+
dfs(nestedList);
223223
}
224224

225225
int next() {

solution/0300-0399/0341.Flatten Nested List Iterator/Solution.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919
class NestedIterator {
2020
public:
2121
NestedIterator(vector<NestedInteger>& nestedList) {
22-
auto dfs = [&](auto&& dfs, vector<NestedInteger>& ls) -> void {
22+
auto dfs = [&](this auto&& dfs, vector<NestedInteger>& ls) -> void {
2323
for (auto& x : ls) {
2424
if (x.isInteger()) {
2525
nums.push_back(x.getInteger());
2626
} else {
27-
dfs(dfs, x.getList());
27+
dfs(x.getList());
2828
}
2929
}
3030
};
31-
dfs(dfs, nestedList);
31+
dfs(nestedList);
3232
}
3333

3434
int next() {
@@ -48,4 +48,4 @@ class NestedIterator {
4848
* Your NestedIterator object will be instantiated and called as such:
4949
* NestedIterator i(nestedList);
5050
* while (i.hasNext()) cout << i.next();
51-
*/
51+
*/

solution/0300-0399/0357.Count Numbers with Unique Digits/README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ tags:
2929
<pre>
3030
<strong>输入:</strong>n = 2
3131
<strong>输出:</strong>91
32-
<strong>解释:</strong>答案应为除去 <code>11、22、33、44、55、66、77、88、99 </code>外,在 0 ≤ x &lt; 100 范围内的所有数字。
32+
<strong>解释:</strong>答案应为除去 <code>11、22、33、44、55、66、77、88、99 </code>外,在 0 ≤ x &lt; 100 范围内的所有数字。
3333
</pre>
3434

3535
<p><strong>示例 2:</strong></p>
@@ -171,7 +171,7 @@ public:
171171
int countNumbersWithUniqueDigits(int n) {
172172
int f[n + 1][1 << 10];
173173
memset(f, -1, sizeof(f));
174-
auto dfs = [&](auto&& dfs, int i, int mask, bool lead) -> int {
174+
auto dfs = [&](this auto&& dfs, int i, int mask, bool lead) -> int {
175175
if (i < 0) {
176176
return 1;
177177
}
@@ -184,17 +184,17 @@ public:
184184
continue;
185185
}
186186
if (lead && j == 0) {
187-
ans += dfs(dfs, i - 1, mask, true);
187+
ans += dfs(i - 1, mask, true);
188188
} else {
189-
ans += dfs(dfs, i - 1, mask | 1 << i, false);
189+
ans += dfs(i - 1, mask | 1 << i, false);
190190
}
191191
}
192192
if (!lead) {
193193
f[i][mask] = ans;
194194
}
195195
return ans;
196196
};
197-
return dfs(dfs, n - 1, 0, true);
197+
return dfs(n - 1, 0, true);
198198
}
199199
};
200200
```

solution/0300-0399/0357.Count Numbers with Unique Digits/README_EN.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ public:
163163
int countNumbersWithUniqueDigits(int n) {
164164
int f[n + 1][1 << 10];
165165
memset(f, -1, sizeof(f));
166-
auto dfs = [&](auto&& dfs, int i, int mask, bool lead) -> int {
166+
auto dfs = [&](this auto&& dfs, int i, int mask, bool lead) -> int {
167167
if (i < 0) {
168168
return 1;
169169
}
@@ -176,17 +176,17 @@ public:
176176
continue;
177177
}
178178
if (lead && j == 0) {
179-
ans += dfs(dfs, i - 1, mask, true);
179+
ans += dfs(i - 1, mask, true);
180180
} else {
181-
ans += dfs(dfs, i - 1, mask | 1 << i, false);
181+
ans += dfs(i - 1, mask | 1 << i, false);
182182
}
183183
}
184184
if (!lead) {
185185
f[i][mask] = ans;
186186
}
187187
return ans;
188188
};
189-
return dfs(dfs, n - 1, 0, true);
189+
return dfs(n - 1, 0, true);
190190
}
191191
};
192192
```

solution/0300-0399/0357.Count Numbers with Unique Digits/Solution.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ class Solution {
33
int countNumbersWithUniqueDigits(int n) {
44
int f[n + 1][1 << 10];
55
memset(f, -1, sizeof(f));
6-
auto dfs = [&](auto&& dfs, int i, int mask, bool lead) -> int {
6+
auto dfs = [&](this auto&& dfs, int i, int mask, bool lead) -> int {
77
if (i < 0) {
88
return 1;
99
}
@@ -16,16 +16,16 @@ class Solution {
1616
continue;
1717
}
1818
if (lead && j == 0) {
19-
ans += dfs(dfs, i - 1, mask, true);
19+
ans += dfs(i - 1, mask, true);
2020
} else {
21-
ans += dfs(dfs, i - 1, mask | 1 << i, false);
21+
ans += dfs(i - 1, mask | 1 << i, false);
2222
}
2323
}
2424
if (!lead) {
2525
f[i][mask] = ans;
2626
}
2727
return ans;
2828
};
29-
return dfs(dfs, n - 1, 0, true);
29+
return dfs(n - 1, 0, true);
3030
}
3131
};

solution/0500-0599/0530.Minimum Absolute Difference in BST/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,16 @@ public:
154154
int getMinimumDifference(TreeNode* root) {
155155
const int inf = 1 << 30;
156156
int ans = inf, pre = -inf;
157-
auto dfs = [&](auto&& dfs, TreeNode* root) -> void {
157+
auto dfs = [&](this auto&& dfs, TreeNode* root) -> void {
158158
if (!root) {
159159
return;
160160
}
161-
dfs(dfs, root->left);
161+
dfs(root->left);
162162
ans = min(ans, root->val - pre);
163163
pre = root->val;
164-
dfs(dfs, root->right);
164+
dfs(root->right);
165165
};
166-
dfs(dfs, root);
166+
dfs(root);
167167
return ans;
168168
}
169169
};

0 commit comments

Comments
 (0)