Contents

ARST打卡第273周

lc3106_满足距离约束且字典序最小的字符串 全球生育减半!大家都不生了?【TED演讲】 TiKV源码阅读三部曲 raft不持久化voted_for的异常

Algorithm

lc3106_满足距离约束且字典序最小的字符串

思路:

这个不像中等题,倒是像简单题,只要直接用k做剩余可操作次数,贪心从头到尾把字母往a上靠即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
    string getSmallestString(string s, int k) {
        int gap = 0;
        for (int i = 0; i < s.length(); i++) {
            gap = min('z' - s[i] + 1, s[i] - 'a');
            // 因以下用例,可知必须把等于放 if 里面而非 if 外
            // 解答错误 572 / 600 个通过的测试用例 s = "rn" k = 9 输出 "in" 预期结果 "an"
            // if (k > gap) {
            if (k >= gap) {
                k -= gap;
                s[i] = 'a';
                continue;
            }
            s[i] -= k;
            return s;
        }
        return s;
    }
};

和题解一毛一样。

Review

全球生育减半!大家都不生了?【TED演讲】

这篇文章讲了生育率降低之后世界的一些挑战,并且讲到需要鼓励生育。

实际上我觉得李光耀观世界那本书讲得更深刻一些,就是女性获取知识之后,在职场平权之后,就会生育意愿下降,这是无法避免的。

能够做的只有提高社会的资源利用率和使用效率,增进社会福利,让妇女生孩子能获得比不生孩子更好的利益,才能改善生育率。

Tips

TiKV 源码阅读三部曲

这三篇文章针对 tikv6.1 版本进行源码解析,主要介绍三个方面:

此三篇博客能够帮助对 TiKV 开发感兴趣的同学尽快了解 TiKV 的 codebase。

Share

raft不持久化voted_for的异常

假设A,B网络不通,A,C 选term x选举, C投票A 后宕机; B,C 再term x(NOTICE: 同一个任期)选举,C启动后又投票给B. 这样就脑裂了。

因此标准的 raft 实现都是持久化 voted_for 的。