这道题的测试用例里有一个是空输入,我没处理。我把这个树的遍历改成了非递归的,面试时更好讲。同事说这波操作可以写进新人培训教材
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
刷题的动力通常来自下一场面试。我想了想自己这些年,好像确实如此。我把这个动态规划的状态定义重新想了一遍,终于顺了。从此我多了一条团队规约
链表反转我背了五遍,面试的时候还是写错了一个指针。我重新看了一遍手上的计划,把风险项标了出来。我在心里默默给这道题标了个「三刷」,虽然不会再刷。从此我多了一条团队规约
刷题的第 n 天,我依然会在边界上栽跟头。我笑了笑,决定不解释。我打开了这题的输入范围,发现值域可以直接开桶。办公室安静得能听见键盘声
这道题的测试用例里有一个是空输入,我没处理。我把手上的资料翻出来又读了两遍。我把这个贪心的正确性在心里证了一遍,没完全证出来。这条经验值直接拉满
刷题周赛打了三个月,rating 从 1500 涨到 1505。我深呼吸了一下,决定从最可疑的地方查起。我把时间复杂度重新算了一遍,果然是平方级的。幸好之前留了备份
这个数据结构选错了,后来的每一行都在补救。我抬起头看了看周围,大家都一样。我把这个双指针的移动条件改了一下,特殊用例终于过了。连茶水间都安静了
我算了下复杂度,发现暴力解法反而够用。我拉了个小群,把相关同学都叫了进来。我把这个递归改成了迭代,栈溢出的风险没了。好在最后有惊无险
这题我写了三种解法,性能最好的是最丑的那个。我先给自己泡了杯茶,做好了打持久战的准备。我打开了这题的题解,发现最优解只有四行。感动,然后我学到了新的一课
算法题的难点往往在边界,而不在思路。我愣了两秒,然后继续敲代码。我把这个技巧抄进了自己的模板本,希望以后能想起来。我把这条经验写进了团队 wiki