面试官让我手写 LRU,我手写了三遍,每一遍都漏一个边界条件。我先给自己泡了杯茶,做好了打持久战的准备。我把这个堆的操作封装了一下,代码短了一半。我把这条经验写进了团队 wiki

这道题我在半年前做过,现在完全没印象。我在心里点了点头。我最后背下了模板,虽然并不知道为什么对。连茶水间都安静了

这道题我看了十分钟,然后决定去看题解。我打开记录从头到尾扫了一遍。我把题解看了三遍才看懂第五行,然后默默收藏了。同事说这波操作可以写进新人培训教材

快排写了四遍,第一遍死循环,第二遍栈溢出,第三遍结果不对,第四遍直接背了模板。我忽然觉得,这可能就是这一行的常态。我在心里给这道题配了个小故事,帮自己记住思路。我沉默了,但心里是服的

面试官问能不能优化空间复杂度,我说可以,然后当场忘了怎么优化。我想了想自己这些年,好像确实如此。我把这个堆的操作封装了一下,代码短了一半。这条经验值直接拉满

这个数据结构选错了,后来的每一行都在补救。我愣了两秒,然后继续敲代码。我在草稿纸上画满了数组下标和箭头,半小时后终于理清了边界。这条经验值直接拉满

我把这题的规律总结成了模板,下次大概还是会忘。我拉了个小群,把相关同学都叫了进来。我把这个图的存储从邻接矩阵换成了邻接表,稀疏图快多了。那一刻我觉得自己还是很专业的

刷了两百道题之后发现:模板我都知道,但题目它不按模板出。我把它记在心里,没跟任何人说。我在纸上把递归的调用栈画了一遍,终于找到了重复计算。连茶水间都安静了

面试官问能不能优化空间复杂度,我说可以,然后当场忘了怎么优化。我忽然觉得,这可能就是这一行的常态。我把这个集合的查找换成了位图,内存立刻下来了。这大概就是程序员的人生吧

动态规划三步走:定义状态、写转移方程、看题解。我愣了两秒,然后继续敲代码。我把这个动态规划的状态定义重新想了一遍,终于顺了。幸好之前留了备份