Skip to content

Commit 93e0530

Browse files
committed
to: 添加注释
1 parent d5c3b8b commit 93e0530

File tree

4 files changed

+35
-19
lines changed

4 files changed

+35
-19
lines changed

src/sort/distant_barcodes.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@
66
class Solution {
77
public:
88
vector<int> rearrangeBarcodes(vector<int> &barcodes) {
9+
// 统计每个条形码数量
910
unordered_map<int, int> count;
1011
for (int b : barcodes) {
1112
count[b]++;
1213
}
14+
// 优先队列,存储条形码数量和对应的条形码
1315
priority_queue<pair<int, int>> q;
1416
for (const auto &[x, cx] : count) {
1517
q.push({cx, x});
1618
}
19+
// 重新排列条形码
1720
vector<int> res;
1821
while (!q.empty()) {
1922
auto [cx, x] = q.top();
@@ -24,8 +27,7 @@ class Solution {
2427
q.push({cx - 1, x});
2528
}
2629
} else {
27-
// if (q.empty())
28-
// return res;
30+
// 如果当前条形码和上一个相同,取出下一个数量最多的条形码插入
2931
auto [cy, y] = q.top();
3032
q.pop();
3133
res.push_back(y);

src/sort/sort_the_people.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,22 @@
55

66
class Solution {
77
public:
8+
// 给定一组名字和身高,按照身高从高到低的顺序排序,并返回名字的排列结果
89
vector<string> sortPeople(vector<string> &names, vector<int> &heights) {
10+
// 保存身高和名字的对应关系
911
vector<pair<int, string>> people;
1012
for (int i = 0; i < names.size(); ++i) {
13+
// 将身高和名字组成一个 pair 并加入 people 中
1114
people.emplace_back(heights[i], names[i]);
1215
}
16+
// 按照身高从高到低的顺序排序
1317
sort(people.begin(), people.end(), greater<pair<int, string>>());
1418
vector<string> result;
19+
// 取出已排好序的名字并保存到 result 中
1520
for (auto &p : people) {
1621
result.push_back(p.second);
1722
}
23+
// 返回名字的排列结果
1824
return result;
1925
}
2026
};

src/tree/camelcase_matching.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,24 @@ class Solution {
77
public:
88
vector<bool> camelMatch(vector<string> &queries, string pattern) {
99
int n = queries.size();
10-
vector<bool> res(n, true);
10+
vector<bool> res(n, true); // 初始化结果数组
1111

12-
for (int i = 0; i < n; ++i) {
13-
int p = 0;
14-
for (auto c : queries[i]) {
15-
if (p < pattern.size() && pattern[p] == c) {
16-
++p;
17-
} else if (isupper(c)) {
18-
res[i] = false;
19-
break;
12+
for (int i = 0; i < n; ++i) { // 遍历每个查询字符串
13+
int p = 0; // 初始化模式串的指针
14+
for (auto c : queries[i]) { // 遍历当前查询字符串的每个字符
15+
if (p < pattern.size() &&
16+
pattern[p] == c) { // 如果模式串的指针未越界且与当前字符匹配
17+
++p; // 模式串指针向后移动
18+
} else if (isupper(c)) { // 如果当前字符为大写字母
19+
res[i] = false; // 当前查询字符串不匹配,将结果设置为false
20+
break; // 跳出循环
2021
}
2122
}
22-
if (p < pattern.size()) {
23-
res[i] = false;
23+
if (p < pattern.size()) { // 如果模式串的指针未移动到模式串末尾
24+
res[i] = false; // 当前查询字符串不匹配,将结果设置为false
2425
}
2526
}
2627

27-
return res;
28+
return res; // 返回结果数组
2829
}
2930
};

src/tree/validate_binary_search_tree.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,28 @@
1515
* right(right) {}
1616
* };
1717
*/
18+
1819
class Solution {
1920
public:
21+
// 递归函数,判断以root为根的子树是否为二叉搜索树,lower和upper分别代表当前节点的上界和下界
2022
bool isValidBST(TreeNode *root, long long lower, long long upper) {
21-
if (root == nullptr)
23+
if (root == nullptr) // 如果是空树,返回true
2224
return true;
2325

24-
if (root->val <= lower || root->val >= upper) {
26+
if (root->val <= lower ||
27+
root->val >= upper) { // 如果当前节点不在上下界范围内,返回false
2528
return false;
2629
}
2730

28-
return isValidBST(root->left, lower, root->val) &&
29-
isValidBST(root->right, root->val, upper);
31+
// 递归判断左右子树是否为二叉搜索树
32+
return isValidBST(root->left, lower,
33+
root->val) && // 左子树的上界更新为root的值,下界不变
34+
isValidBST(root->right, root->val,
35+
upper); // 右子树的下界更新为root的值,上界不变
3036
}
3137

3238
bool isValidBST(TreeNode *root) {
33-
return isValidBST(root, LONG_MIN, LONG_MAX);
39+
return isValidBST(root, LONG_MIN,
40+
LONG_MAX); // 调用递归函数,判断整棵树是否为二叉搜索树
3441
}
3542
};

0 commit comments

Comments
 (0)