Contents

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,然后再输入