ARST打卡第224周[224/521]

Algorithm

lc2236_判断根结点是否等于子结点之和

虽然是一个简单题,但是自己思考了一下如何做递归做法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
bool checkSubTree(TreeNode* root, int& sub_sum) {
// 检查子树是否满足,并且返回子树的sum
// 递归终止条件是 null
if (!root) {
return true;
}
// 递归是左右子树
int l = -101;
int r = -101;
if (checkSubTree(root->left, l) &&
checkSubTree(root->right, r)) {
// 依次判断是否有左右子树的情况。
if (l == -101 && r == -101) {
sub_sum = root->val;
return true;
} else if (l == -101) {
sub_sum = root->val + r;
return root->val == r;
} else if (r == -101) {
sub_sum = root->val + l;
return root->val == l;
}
sub_sum = root->val + l + r;
return root->val == l + r;
}
return false;
}
bool checkTree(TreeNode* root) {
// 简单做法
// return root->val == root->left->val + root->right->val;
// 递归做法
int root_sum;
return checkSubTree(root, root_sum);
}
};

Review

【TED演讲】如何控制碳排放

只有能测量,才能精确地控制排放数量,所以需要通过科学地建立碳排放的模型,然后再通过 AI 辅助计算碳排放,从而做到控制世界的碳排放。

Tips

P99是什么意思

百分位数值是一个统计学中的术语。

如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:
一组n个观测值按数值大小排列。
如,处于p%位置的值称第p百分位数

用我们软件开发行业的例子通俗来讲就是,假设有100个请求,按照响应时间从小到大排列,位置为X的值,即为PX值。

P1就是响应时间最小的请求,P10就是排名第十的请求,P100就是响应时间最长的请求。

在真正使用过程中,最常用的主要有P50(中位数)、P95、P99。

P50: 即中位数值。100个请求按照响应时间从小到大排列,位置为50的值,即为P50值。如果响应时间的P50值为200ms,代表我们有半数的用户响应耗时在200ms之内,有半数的用户响应耗时大于200ms。如果你觉得中位数值不够精确,那么可以使用P95和P99.9

P95:响应耗时从小到大排列,顺序处于95%位置的值即为P95值。

还是采用上面那个例子,100个请求按照响应时间从小到大排列,位置为95的值,即为P95值。 我们假设该值为200ms,那这个值又表示什么意思呢?

意思是说,我们对95%的用户的响应耗时在200ms之内,只有5%的用户的响应耗时大于200ms,据此,我们掌握了更精确的服务响应耗时信息。

P99.9:许多大型的互联网公司会采用P99.9值,也就是99.9%用户耗时作为指标,意思就是1000个用户里面,999个用户的耗时上限,通过测量与优化该值,就可保证绝大多数用户的使用体验。
至于P99.99值,优化成本过高,而且服务响应由于网络波动、系统抖动等不能解决之情况,因此大多数时候都不考虑该指标。

参考链接

P95、P99.9百分位数值——服务响应时间的重要衡量指标

Share VScode_vim给当前单词加引号

  1. 移动到单词上,可以在词中间
  2. ciw , c 是 change, iw 表示 inner word (这样单词在剪切板的)
  3. 输入 "<CTRL/cmd+V>" , ctrl/cmd+v把单词粘贴出来

上面这种方式对于一长串的单词是非常有必要的,比起下面两种方法都要快

  1. 先移动到单词首尾的一个,然后插入一个符号,方向键移动单词长度次,再插入一个符号
  2. 先移动到单词首尾的一个,然后插入一个符号,<ESC> e or b,再次 insert,然后再输入