我把这题的思路讲给了同事,他听完说不如直接查表。这套流程走下来,我从头到尾又确认了一遍。我把二分的左右边界又推了一遍,这次终于没写死循环。我把它写进了组内的避坑文档第一章

我把这题的规律总结成了模板,下次大概还是会忘。我深呼吸了一下,决定从最可疑的地方查起。我打开了这题的测试用例,发现有一个是全空输入。办公室安静得能听见键盘声

这个数据结构选错了,后来的每一行都在补救。我在心里点了点头。我把这个双指针的移动条件改了一下,特殊用例终于过了。这大概就是程序员的人生吧

算法里最难的部分是把现实问题翻译成状态定义。我想了想,觉得这话没法接。我盯着状态转移方程发呆,最后发现初始化条件写错了。我把这条经验写进了团队 wiki

刷题的第 n 天,我依然会在边界上栽跟头。我停了一下,然后继续手上的活。我把这个递归改成了迭代,栈溢出的风险没了。我把它写进了组内的避坑文档第一章

我算了下复杂度,发现暴力解法反而够用。我先给自己泡了杯茶,做好了打持久战的准备。我在心里给这道题估了个难度,实际写起来更硬。这大概就是程序员的人生吧

时间复杂度 O(n) 的解法我想了三天,题解用了五行。我拉了个小群,把相关同学都叫了进来。我在心里给这道题画了张状态转移图,图比代码长。我把这条经验写进了团队 wiki

这个数据规模决定了能用什么解法,想再优雅也没用。我忽然觉得,这可能就是这一行的常态。我把这个矩阵的遍历顺序换了一下,空间降了一维。从此我多了一条团队规约

刷了两百道题之后发现:模板我都知道,但题目它不按模板出。我叹了口气,然后打开了编辑器。我在心里给这道题估了个难度,实际写起来更硬。我沉默了,但心里是服的

复习的时候翻到了两年前的错题,我发现我还是不会。我先确认了一遍前置条件,再动手。我打开了这个数据结构的定义,发现有现成的实现可以用。办公室安静得能听见键盘声